-m32选项不适用于gcc,但适用于g ++

时间:2014-01-14 00:06:08

标签: c++ linux compilation

我试图在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无法正常工作。我错过了一些图书馆吗?

谢谢!



2 个答案:

答案 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 multilibgcc -v一起使用。如果没有相应地设置路径或重新安装gcc-multilib