我的目标是在Centos 7上使用gcc 7.2 (和clang 6)来构建与Centos 7目标兼容的可执行文件,而不需要安装devtoolset,而是使用更新的C++ ABI *。
更新的ABI修复了库中的一些缺陷,这些缺陷在没有ABI更改的情况下无法修复。例如列表::大小O(1)比O(n),没有牛的字符串。
我推测了一个答案,为什么在以下问题中不可能做到这一点。ABI=1对CentOS 7上的devtoolset-7无效
发布于 2018-10-02 15:27:37
这似乎是一个重复的问题,你的链接,我不认为有任何理由保持两个开放。
我可以使用新的C++ 11 ABI与devtoolset-7在Centos/RHEL上?
不是的。devtoolset混合链接模型不能支持cxx11 ABI影响到libstdc++.so内部的许多东西(特别是locale )。初始化区域设置的相关函数已经存在于系统libstdc++.so中,不能由devtoolset的libstdc++_nonshared.a替换。因此(为了避免其他潜在的ABI不匹配,我们不想影响RHEL/CentOS用户),我们在devtoolset中禁用了新的ABI (正如在另一个问题的答案中正确声明的)。
如果您真的需要新的cxx11 ABI,您需要构建自己的GCC 7,它使用与自己的libstdc++.so的正常动态链接(而不是devtoolset使用的混合链接模型),然后确保在运行时使用新的libstdc++.so (参见手册中的寻找动态或共享的库 )。
https://stackoverflow.com/questions/49393888
复制相似问题