簡體   English   中英

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

[英](How) Can I use the new C++ 11 ABI with devtoolset-7 on Centos/RHEL?

我的目標是在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無效

這似乎與您鏈接的問題重復,我認為沒有任何理由保持兩者都開放。

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

cxx11 ABI會影響libstdc++.so內部的一些內容libstdc++.so (具體來說,區域設置方面)devtoolset混合鏈接模型無法支持。 初始化語言環境的相關函數已存在於系統libstdc++.so不能被devtoolset的libstdc++_nonshared.a替換。 因此(並且為了避免我們不希望影響RHEL / CentOS用戶的其他潛在ABI不匹配),我們在devtoolset中禁用新的ABI(正如在另一個問題的答案中正確陳述的那樣)。

如果你真的需要新的cxx11 ABI,你需要構建自己的GCC 7,它使用正常的動態鏈接到它自己的libstdc++.so (而不是devtoolset使用的混合鏈接模型),然后確保使用新的libstdc ++。so在運行時(請參閱手冊中的查找動態或共享庫 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM