较新的ABI修复了lib中的一些缺陷,这些缺陷在没有ABI更改的情况下无法修复.例如:list :: size O(1)Vs O(n),字符串没有COW.
我猜测为什么在以下问题中可能无法实现这一点.
-D_GLIBCXX_USE_CXX11_ABI=1 ineffective for devtoolset-7 on CentOS 7
Can I use the new C++ 11 ABI with devtoolset-7 on Centos/RHEL?
不可以.cxx11 ABI会影响libstdc .so内部的一些内容(特别是locale facets),这是devtoolset混合链接模型无法支持的.初始化语言环境的相关函数已经存在于系统libstdc .so中,并且不能被devtoolset的libstdc _nonshared.a替换.因此(并且为了避免我们不希望影响RHEL / CentOS用户的其他潜在ABI不匹配),我们在devtoolset中禁用新的ABI(如the answer to the other question中所述).
如果你真的需要新的cxx11 ABI,你需要构建自己的GCC 7,它使用正常的动态链接到它自己的libstdc .so(而不是devtoolset使用的混合链接模型),然后确保使用新的libstdc .so在运行时(参见手册中的Finding Dynamic or Shared Libraries).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。