GLIBCXX(libstdc++.so.6)与gcc版本之间的关系
Relationship between GLIBCXX(libstdc++.so.6) and gcc version
【情况】
我正在开发一个c++库。我对GLIBCXX版本有问题。
之前,我在版本机GLIBCXX_3.4.22上进行了开发。
但是我的库没有在具有GLIBCXX_3.4.19的目标机器上工作。
因此,我将gcc版本从5.2.x降级为4.8.x,将GLIBCXX版本从3.4.22降级为3.4.19。
它已在目标计算机上成功运行。
但是我的开发机器(ubuntu)启动失败了,因为其他库找不到已经链接到该版本的GLIBCXX 3.4.22版本。
因此,我重新安装了GLIBCXX 3.4.22,但gcc版本仍然是4.8.5。
[问题]
-
我在gcc-4.8.5上编译的库是否不使用GLIBCXX_3.4.22版本?在这种环境下开发可以吗(gcc 4.8.5,GLIBCXX_3.4.22)?
-
在linux机器上,gcc(compile)版本和GLIBCX(GLIBC)版本之间的关系是什么。
-
在哪里可以检查gcc和GLIBCXX(GLIBC)之间的正确版本兼容性映射信息?
libstdc++(GLIBCXX_*版本符号的来源)从GCC 3.4.0到现在一直与ABI兼容。
-
编译时,您的库将使用libstdc++中的最新符号版本。编译器版本无关紧要,除外
-
GCC 5.1在libstdc++中添加了对C++11的支持和"双ABI"。以C++11模式编译的代码将使用带有
[abi:cxx11]
标记的符号,这些符号可能无法与未使用C++11编译的代码进行互操作(无论是来自不支持C++11的旧编译器,还是设置为使用旧标准的新编译器)。 -
https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
如果您需要构建在较旧系统上运行的二进制文件,我建议您在容器中设置一个较旧的发行版,并在其中构建所有旧库。这样,开发系统中的任何更新内容都不会泄漏到它们中。
- 在clang++预处理器中确定gcc工具链版本
- 如何指示 cmake 的 gcc 版本?
- 不同版本的编译器(例如GCC)是否会产生不同的性能?
- g++ libstdc++.so.6:从 4.8.5 升级到 GCC 版本 7.3.0 后找不到版本 'CXXABI_1.3.9'
- 为什么库API+编译器ABI足以确保具有不同版本gcc的对象之间的兼容性
- GCC:--静态链接到pthread的整个存档配方在最近的GCC版本中停止工作
- glibc 版本比 gcc 版本和 -wl,-rpath 不工作
- 三元运算符 '?:' 在 4.9.0 之前的 GCC 版本中推断出不正确的类型?
- 使用不同版本的 gcc 和 g++ 进行编译时出现问题
- 在CentOS 7上安装GCC 7.4.0不会更新我的LIBSTDC 版本
- 与NVIDIA链接的错误GCC版本
- 是否有编译器标志可以使较新的 gcc 版本像旧版本一样构建
- GCC编译器,为较低版本的GCC编译应用程序
- 所有版本的 GCC 都与默认成员初始值设定项作斗争,该初始值设定项捕获了这一点,并结合了继承的构造函数
- 不同的内在行为取决于 GCC 版本
- 所有版本的 GCC 都在与定义中具有默认类型的模板作斗争
- 如何在使用旧版本gcc的系统上动态链接到libc.so.6、libstdc++.so.6的本地副本
- 暂时禁用特定版本GCC上的警告
- 在使用旧版本gcc / glibc / libstdc++的计算机上运行用gcc 4.7编译的c++ 11可执行文件的问
- 对于使用旧版本gcc的系统,使用gcc进行构建