为什么我的代码在x64而不是在x32中编译?

时间:2014-09-12 12:24:15

标签: c linux gcc libraries

我在谷歌搜索但我找不到解决方案,我想在x64位Debian系统上用32位gcc编译一个C程序。我使用以下命令编译:

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-libs。以同样的方式,我导出了路径:

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

它仍然没有编译。这段代码在x64中编译没有错误,我只想编译32位的相同代码。

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决方案,可以静态地在32位上直接编译它,现在它可以工作了。我想通过这种方式,我不需要担心x64和x86之间的库兼容性