2014-01-14 3 views
4

Я пытался скомпилировать приложение для 32-битной цели на машине x86_64 ubuntu 12.04. Я установил необходимые пакеты с помощью-m32 опция не работает с gcc, но работает с g ++

sudo apt-get install gcc-multilib g++-multilib libc6-i386 libc6-dev-i386 

Первая команда работает порождающих 32 разрядной версии. Однако ошибка второй команды

1. g++ -m32 hello.c 

2. gcc -m32 hello.c 
skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc 
/usr/bin/ld: cannot find -lgcc 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s 
/usr/bin/ld: cannot find -lgcc_s 

Может ли кто-нибудь объяснить мне, почему gcc не работает. Мне не хватает некоторых библиотек?

Спасибо!



ответ

9

Я обновил свой g ++ до 4.8, а g ++ -m32 тоже перестала работать. Установка опции g ++ - 4.8-multilib made -m32 работает как с gcc, так и с g ++.

2

Я думаю, что вам нужен этот пакет Ubuntu:

sudo apt-get install ia32-libs 

подтверждают также, что вы используете gcc multilib с gcc -v. Если не установлен путь соответственно или переустановить gcc-multilib.

+0

У меня есть он установлен. Извиняюсь, что не упоминал об этом раньше. – SArora

+0

@SArora, вы можете попробовать: gcc -m32 -L/usr/lib32 -o hello hello.c –

+0

Да. Я пробовал это раньше. Это не работает. У меня есть crt1.o и libgcc_s.so.1 в/usr/lib32. Интересно, если он ищет что-то еще. – SArora

Смежные вопросы