新版本的 g++ 与旧版本的 libstdc++
New version of g++ with an older version of libstdc++
我运行的是 Linux CentOS 7.3,它附带 g++ 4.8.5。我想使用 g++ 7.1.0 来编译一些C++软件。但是用 g++ 7.1.0 编译的C++程序使用的是 g++ 7.1.0 附带的标准库中的标头,以及它也附带的 libstdc++.so 让事情变得非常痛苦。
有没有办法使用 g++ 7.1.0 并且仍然使用与 CentOS 一起安装的 g++ 4.8.5 中的标准库(标头和 libstdc++.so(?
有没有办法使用 g++ 7.1.0 并且仍然使用与 CentOS 一起安装的 g++ 4.8.5 中的标准库(标头和 libstdc++.so(?
不要这样做(GCC 4.8和GCC 7的libstdc++
ABI可能不同(。相反,请考虑静态链接C++标准库(来自GCC 7.1((以及其他动态库,特别是C中的库,包括libc.so
,而不是C++(。
顺便说一句,你是怎么g++-7.1
的?你可以考虑在 CentOS 7 上编译 GCC 7(从它的源代码((或获得它的一些打包版本(,那么你将拥有正确的libstdc++
阅读更多关于共享库的信息,例如阅读 Drepper 的论文如何编写共享库,并了解有关传递给ld
的-rpath
选项的更多信息(通常使用 -Wl,-rpath
来g++
(。
libstdc++ ABI 在 gcc4 和 gcc5 之间发生了变化,所以这不起作用。如果你使用的是 gcc7,你应该安装 libstdc++ 7。您可以同时安装两个版本
开发人员工具集专为此方案而设计,但当前为 GCC 版本 6:
- https://www.softwarecollections.org/en/scls/rhscl/devtoolset-6/
它的C++编译器的配置方式是,它编译的程序与系统libstdc++
动态链接,使用向后兼容的ABI,并且只有系统库尚不支持的新C++功能的库代码是静态链接的。 这提供了最大的兼容性,并允许编译的应用程序在没有 DTS 的情况下运行。
- 在运行时读取 libstdc++ 版本
- g++ libstdc++.so.6:从 4.8.5 升级到 GCC 版本 7.3.0 后找不到版本 'CXXABI_1.3.9'
- /lib/libstdc++.so.6:没有可用的版本信息
- Anaconda ImportError: /usr/lib64/libstdc++.so.6: 找不到版本 'GLIBCXX_3.4.21'
- libstdc++.so 在使用 Patchelf 和备用 glibc 版本时找不到
- 在CentOS 7上安装GCC 7.4.0不会更新我的LIBSTDC 版本
- 如何手动设置'libstdc++.so.6'使用哪个版本而不是使用最新版本?
- 新版本的 g++ 与旧版本的 libstdc++
- ld.so.1:protoc:fatal:libstdc++.so.6:在 Solaris 11 中找不到版本"GLIBCXX_3.4.20"
- GLIBCXX(libstdc++.so.6)与gcc版本之间的关系
- 在同一系统上有多个GCC的情况下,使用哪个版本的libstdc++.so
- 如何测试libstdc++的版本
- 如何在使用旧版本gcc的系统上动态链接到libc.so.6、libstdc++.so.6的本地副本
- 确定 libstdc++ 的版本
- 每个libstdc++版本的`__GLIBCXX__`值
- 两个使用不同libstdc++版本的静态库
- /usr/lib/x86_64-linux-gnu/libstdc++.so.6:未找到版本 CXXABI_1.3.8'
- 如何解析 /usr/lib64/libstdc++.so.6:在我的 CGAL cmake 项目中找不到版本 'GLIBCXX_3.4.15'?
- 混合libstdc++版本
- 如何修复:/usr/lib/libstdc++.so.6:未找到版本"GLIBCXX_3.4.15"