ubuntu 11.04 上自定义构建的 gcc 4.6.0 链接错误的 libstdc++

发布于 2024-11-02 04:33:57 字数 178 浏览 4 评论 0原文

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

谢谢

my custom built gcc 4.6.0, installed in my home directory, on ubuntu 10.04, links the system libstdc++ instead of the custom built one, most of the time (as evidenced by ldd). to be more puzzling, using this newly built gcc, custom compiled openmpi libraries are linked correctly, and this is the only software i have compiled that behaves ok. does anybody have any explanation for this, or a workaround?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

·深蓝 2024-11-09 04:33:57

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

Isn't there an option to statically link the libstdc into the gcc when you configure it? --disable-shared if I understand how it works correctly. Worst case make another compile of gcc with that switch and see if you run into the issue.

若沐 2024-11-09 04:33:57

我不知道为什么 GCC 网站上没有为最终用户提供更清晰的详细信息。 GCC 常见问题解答明确指出这是 libstdc++ 的常见问题。环境变量很麻烦。包装链接器,没有人知道如何做到这一点。编辑 /etc/ld.so.conf 不是一个选项。到处添加 -Wl,-rpath ,来吧。最简单的解决方案是 specs 文件。对于典型的 64 位 x86 Linux 系统,进入您的自定义 gcc 安装,在 dirname `g++ -print-libgcc-file-name` 中,然后运行 ​​g++ -dumpspecs >规格。编辑该文件,找到 *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++ 编译器,它生成可以正常工作的二进制文件。

另请参阅:

I don't know why this isn't detailed more clearly on the GCC website for end-users. The GCC FAQ clearly states this is a common problem wrt libstdc++. Environment variables are troublesome. Wrapping the linker, nobody knows how to do that. Editing /etc/ld.so.conf isn't an option. Adding -Wl,-rpath everywhere, come on. The easiest solution is the specs file. For a typical 64-bit x86 Linux system, go into your custom gcc installation, in dirname `g++ -print-libgcc-file-name`and then run g++ -dumpspecs > specs. Edit that file, find the *link_command: section. After %(link_libgcc) add -rpath /home/user/bin/gcc-9/lib64 (of course use your own path). Or add the same rpath to end of *link: section. Alternatively, configure gcc with --with-specs='%{!static:%x{-rpath=/home/user/bin/gcc9/lib64} %x{-enable-new-dtags}}' . Enjoy your own C++ compiler that generates binaries that just work.

See also:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文