GCC 5 ABI 更改
Posted
技术标签:
【中文标题】GCC 5 ABI 更改【英文标题】:GCC 5 ABI change 【发布时间】:2015-02-12 09:26:24 【问题描述】:Fedora announced 他们可能计划在默认情况下关闭新 ABI 的情况下发布 GCC 5。据我了解,Fedora 22 将继续使用旧 ABI,Fedora 23 将使用新 ABI。程序必须大量重新编译。
我的问题是 C++11 标准从 C++03 发生的哪些改变会破坏 ABI 兼容性?
【问题讨论】:
一个典型的事情是std::string
没有引用计数并且有小字符串优化。
还有 std::list
,现在需要 O(1) size()
。
无需重新编译程序。仔细阅读公告。
GCC5 and the C++11 ABI@redhat
【参考方案1】:
GCC wiki 上有一个关于 Cxx11 向后 ABI 兼容性的页面:https://gcc.gnu.org/wiki/Cxx11AbiCompatibility
C++98 语言与 C++11 语言的 ABI 兼容,但库中的一些地方破坏了兼容性。这使得将 C++98 对象与 C++11 对象链接起来很危险。
【讨论】:
你能把这个更明确,而不仅仅是链接吗?以上是关于GCC 5 ABI 更改的主要内容,如果未能解决你的问题,请参考以下文章
GCC编译宏_GLIBCXX_USE_CXX11_ABI背景分析和实现原理