3

我的自定义构建的 gcc 4.6.0 安装在我的主目录中,在 ubuntu 10.04 上,大多数时候链接系统 libstdc++ 而不是自定义构建的(如 ldd 所证明的那样)。更令人费解的是,使用这个新构建的 gcc,自定义编译的 openmpi 库被正确链接,这是我编译的唯一表现正常的软件。有人对此有任何解释或解决方法吗?

谢谢

4

2 回答 2

2

配置时是否没有将libstdc静态链接到gcc的选项?--disable-shared 如果我了解它是如何正常工作的。最坏的情况是使用该开关再次编译 gcc,看看你是否遇到了问题。

于 2011-06-15T04:25:40.637 回答
0

我不知道为什么在最终用户的 GCC 网站上没有更清楚地详细说明这一点。GCC FAQ 明确指出这是一个常见问题 wrt libstdc++。环境变量很麻烦。包装链接器,没有人知道该怎么做。编辑/etc/ld.so.conf不是一种选择。-Wl,-rpath到处添加,加油。最简单的解决方案是specs文件。对于典型的 64 位 x86 Linux 系统,进入自定义 gcc 安装,dirname `g++ -print-libgcc-file-name`然后运行g++ -dumpspecs > specs​​. 编辑该文件,找到该*link_command:部分。%(link_libgcc)添加后-rpath /home/user/bin/gcc-9/lib64(当然使用自己的路径)。或者将相同的 rpath 添加到*link:部分的末尾。或者,将 gcc 配置为--with-specs='%{!static:%x{-rpath=/home/user/bin/gcc9/lib64} %x{-enable-new-dtags}}'. 享受您自己的 C++ 编译器,该编译器可以生成可以正常工作的二进制文件。

也可以看看:

于 2019-04-25T15:02:09.623 回答