使用g ++ -m32选项编译C ++

时间:2016-10-16 07:22:20

标签: c++ linux gcc g++

我正在尝试编译:

-bash-4.1$ g++ -static -m32 Hello.cpp

并得到这样的错误:

/opt/rh/devtoolset-4/root/usr/libexec/gcc/x86_64-redhat-linux/5.2.1/ld: skipping incompatible /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.2.1/libstdc++.a when searching for -lstdc++
/opt/rh/devtoolset-4/root/usr/libexec/gcc/x86_64-redhat-linux/5.2.1/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status

我也尝试了这个但仍然得到完全相同的错误

g++ -static -m32 -L/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.2.1/32 Hello.cpp

我已尝试过这两个命令 - 没有任何帮助。

为什么还在查看错误的目录?
是否使用-m32选项覆盖-L选项?
我找不到关于-m32选项的大量文档。

请帮忙。

谢谢!

1 个答案:

答案 0 :(得分:0)

  • 为什么还在查看错误的目录?
    编译器总是先查看预定义的目录。 -L选项会将您的路径添加到这些目录列表中,因此编译器会在错误的目录中 stil查找。有关更详细的输出,请尝试使用详细输出-###-v选项编译您的程序。
  • 使用-m32选项覆盖-L选项吗?
    答案是否定的 - -m32选项是生成32位代码的选项,例如: 您可以在64位计算机上生成可在32位机器上运行的32位代码。您也可以在64位计算机上运行此代码 - 它将运行良好。

  • 我找不到关于-m32选项的文档。
    这是GCC docs的链接 以下是关于directory searching options

  • 的文档

另外要说编译器在哪里找到库,你可以设置
你的环境LD_LIBRARY_PATH export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FULL_PATH_TO_YOUR_LIB
不要覆盖环境变量 - 因为如果你不确定自己在做什么,可能会导致更多问题。