【问题标题】:custom built gcc 4.6.0 on ubuntu 11.04 links wrong libstdc++在 ubuntu 11.04 上自定义构建的 gcc 4.6.0 链接错误的 libstdc++
【发布时间】:2011-04-19 15:21:48
【问题描述】:

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

谢谢

【问题讨论】:

标签: gcc libstdc++


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我不知道为什么 GCC 网站上没有为最终用户更清楚地详细说明这一点。 GCC FAQ 明确指出这是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: 部分的末尾。或者,使用 --with-specs='%{!static:%x{-rpath=/home/user/bin/gcc9/lib64} %x{-enable-new-dtags}}' 配置 gcc。享受您自己的 C++ 编译器,该编译器生成的二进制文件可以正常工作。

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 2011-08-11
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      相关资源
      最近更新 更多