(如何)我可以在Centos/RHEL上使用带有devtoolset-7的新C++ 11 ABI吗?

Pau*_*aul 8 c++ c++11 devtoolset centos7 software-collections

我的目标是在Centos 7上使用gcc 7.2(和clang 6)构建与Centos 7目标兼容的可执行文件,而不安装devtoolset,但*使用较新的C++ ABI*.

较新的ABI修复了lib中的一些缺陷,这些缺陷在没有ABI更改的情况下无法修复.例如list :: size O(1)Vs O(n),字符串没有COW.

我猜测为什么在以下问题中可能无法实现这一点. -D_GLIBCXX_USE_CXX11_ABI = 1对CentOS 7上的devtoolset-7无效

Jon*_*ely 6

这似乎与您链接的问题重复,我认为没有任何理由让两者保持开放。

我可以在 Centos/RHEL 上使用带有 devtoolset-7 的新 C++ 11 ABI 吗?

号的cxx11ABI影响许多事情内部到libstdc++.so其不能由devtoolset混合键模型来支持(具体地,区域设置的面)。初始化语言环境的相关函数已经存在于系统中libstdc++.so,不能被 devtoolset 的libstdc++_nonshared.a. 因此(并且为了避免我们不想影响 RHEL/CentOS 用户的其他潜在 ABI 不匹配),我们在 devtoolset 中禁用了新的 ABI(如另一个问题的答案中所述)。

如果您真的需要新的cxx11ABI,则需要构建自己的 GCC 7,该 GCC 7 使用正常的动态链接到自己的libstdc++.so(而不是 devtoolset 使用的混合链接模型),然后确保在运行时使用新的 libstdc++.so(请参阅在手册中查找动态或共享库)。