2014-09-12 2 views
1

Я был googling, но я не нашел решение, я хочу скомпилировать C-программу с gcc в 32 бита на 64-битной системе Debian. Я использую следующую команду для компиляции:Почему мой код компилируется в x64, а не в x32?

gcc -m32 -o programExecutable -L/usr/lib/i386-linux-gnu/ -I/home/secnok/polarssl- 
1.3.5/include/ -I/usr/local/include/libusb-1.0 main.c /home/secnok/polarssl- 
1.3.5/library/libpolarssl.a /usr/local/lib/libusb-1.0.a -lpthread -ludev 

и я получаю этот выход:

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux gnu/4.7  
/../../../libudev.so when searching for -ludev /usr/bin/ld: skipping incompatible 
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../libudev.a when searching for -ludev 
/usr/bin/ld: skipping incompatible /usr/lib/libudev.so when searching for -ludev 
/usr/bin/ld: skipping incompatible /usr/lib/libudev.a when searching for -ludev 
/usr/bin/ld: cannot find -ludev 

я установил библиотеку GCC++ cmultilib и ia32-ЛИЭС. Таким же образом, я экспортировал путь:

export LD_LIBRARY_PATH="/lib32:/usr/lib32:$LD_LIBRARY_PATH" 

и он до сих пор не компилируется. Этот код компилируется в x64 без ошибок, я просто хочу скомпилировать тот же код для 32 бит.

+0

http://stackoverflow.com/questions/4250624/ld-library-path-vs-library-path –

+1

Возможно, потому что ' libudev' недоступен для 32-битного. – ckruse

+0

Обратите внимание, что x32 - это режим, разрешенный компилятором '-mx32' (32-разрядный и указатели в 64-битном режиме). Режим, разрешенный '-m32', - i686. Название путается. –

ответ

0

Наконец-то я нашел решение, чтобы скомпилировать его непосредственно на 32 битах статически, и теперь он работает. Я так думаю, мне не нужно беспокоиться о совместимости библиотек между x64 и x86

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