我的自定义内置gcc 4.6.0,安装在我的主目录中,在ubuntu 10.04上,大部分时间链接系统libstdc ++而不是自定义构建的(如ldd所示)。更令人费解的是,使用这个新构建的gcc,自定义编译的openmpi库正确链接,这是我编译的唯一可行的软件。有没有人对此有任何解释或解决方法?
感谢
答案 0 :(得分:2)
配置它时,是否存在将libstdc静态链接到gcc的选项? - 如果我了解它是如何正常工作的,则禁用共享。最糟糕的情况是使用该开关再次编译gcc,看看你是否遇到了这个问题。
答案 1 :(得分:0)
我不知道为什么在GCC网站上针对最终用户没有对此进行更详细的说明。 GCC常见问题解答明确指出,这是libstdc++
的常见问题。环境变量很麻烦。包装了链接器,没人知道该怎么做。不能编辑/etc/ld.so.conf
。随处添加-Wl,-rpath
,来吧。最简单的解决方案是specs
文件。对于典型的64位x86 Linux系统,请进入dirname `g++ -print-libgcc-file-name`
中的自定义gcc安装,然后运行g++ -dumpspecs > specs
。编辑该文件,找到*link_command:
部分。在%(link_libgcc)
之后添加-rpath /home/user/bin/gcc-9/lib64
(当然使用您自己的路径)。或将相同的rpath添加到*link:
部分的末尾。或者,用--with-specs='%{!static:%x{-rpath=/home/user/bin/gcc9/lib64} %x{-enable-new-dtags}}'
配置gcc。享受您自己的C ++编译器,该编译器生成可以正常运行的二进制文件。
另请参阅: