首页 > 解决方案 > libstdc++ 和 libgcc 前向兼容性

问题描述

根据 GCC ABI Policy and Guidelines 页面,我了解到他们试图保持前向兼容性,但我想知道这在多大程度上是正确的,或者我是否遗漏了一些东西。

我目前正在尝试在带有 libstdc++ 6.0.19 的 CentOS 7 上使用 gcc 4.1.2 / libstdc++ 6.0.8 运行基于 red hat 5 构建的 C++ 软件。

我遇到了奇怪的行为,例如随机崩溃(可能会工作一段时间,然后系统崩溃 30 分钟,然后再次工作......)或内存猛增以使用所有 64GB 服务器(以前从未见过这个问题)。

我似乎通过静态链接 libgcc 和 libstdc++ 解决了其中一个行为不端程序的问题。几个小时过去了,没有崩溃。我正在考虑使用 LD_LIBRARY_PATH 并将库与可执行文件一起发送。

但是将相同类型的解决方案应用于整个系统将非常耗时,所以如果有人能告诉我我是否走在正确的轨道上,我将不胜感激。

- 编辑 -

我忘了提,有些库是静态链接到 libstdc++ 的,有些是动态链接的,所以我有以下情况:

program_a -(dyn link)-> libstdc++
         |-(dyn link)-> lib_b -(static link)-> libstdc++
                             |-(dyn link)----> lib_c -(dyn link)-> libstdc++
                             

所以这里我有一个 libstdc++ 是系统的,另一个是编译器的。

标签: c++linuxgcclibstdc++libgcc

解决方案


推荐阅读