c++ - 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++ 是系统的,另一个是编译器的。
解决方案
推荐阅读
- java - 日期对象的奇怪行为与 Mongodb 产生无效字符串 [UTC]
- javascript - 使用事件页面或 Service Worker 的扩展必须将 id 参数传递给 chrome.contextMenus.create
- c++ - 如何制作跨度的跨度
- proxy - kde 更新想要一个代理(如何停止)
- c++ - 如何使用单例设计模式进一步初始化静态全局变量
- python - 在numpy中翻译具有负值的排序键lambda
- assembly - 在 mips mars 组件中加倍浮动
- angular - 带下拉菜单的角垫表内联过滤器
- r - 将列中以冒号分隔的字符串拆分为 R 中的不同列
- html - Flex 包裹儿童