我正在尝试编译:
-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
选项的大量文档。
请帮忙。
谢谢!
答案 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
不要覆盖环境变量 - 因为如果你不确定自己在做什么,可能会导致更多问题。