我试图在x86_64 ubuntu 12.04机器上编译32位目标的应用程序。 我使用
安装了所需的包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无法正常工作。我错过了一些图书馆吗?
谢谢!
答案 0 :(得分:9)
我将g ++升级到4.8并且g ++ -m32也停止了工作。安装g ++ - 4.8-multilib make -m32选项适用于gcc和g ++。
答案 1 :(得分:2)
我认为你需要这个Ubuntu包:
sudo apt-get install ia32-libs
同时确认您将gcc multilib
与gcc -v
一起使用。如果没有相应地设置路径或重新安装gcc-multilib
。