首頁 > 後端開發 > C++ > C 11、C 14 和 C 17 物件能否安全連結在一起?

C 11、C 14 和 C 17 物件能否安全連結在一起?

Linda Hamilton
發布: 2024-12-04 08:07:17
原創
701 人瀏覽過

Can C  11, C  14, and C  17 Objects Be Safely Linked Together?

連結C 17/14/11 物件

假設您有多個來自同一編譯器/版本的已編譯物件:其中一個是用C 11 編譯的,另一個使用C 14,第三個使用C 17。假設所有標頭都使用 C 11 結構,並且有沒有相互依賴關係,這些物件的哪些組合可以安全地連結到單一二進位檔案中?

GCC

對於 GCC,連結這些物件的任何組合都是安全的。標準版本(-std 選項)不會影響 ABI 相容性,因為實作確保了此屬性。

但是,當連結使用不同 GCC 版本編譯的物件並使用較新 C 標準中的不穩定功能時,會出現問題編譯器的支援已經完成。因此,使用 -std=c 11 連結使用 GCC 版本 4.9 和 5 編譯的物件或使用 -std=c 17 連結使用 GCC 版本 7 和 8 編譯的物件將導致問題。

其他注意事項

  • libstdc .so 共享函式庫應該來自等於或晚於的 GCC 版本用於編譯任何物件。
  • 字串實作必須在所有物件中保持一致。使用 -D_GLIBCXX_USE_CXX11_ABI=0 或 1 進行編譯以分別選擇 gcc4 相容或新的 cxx11 實作。

以上是C 11、C 14 和 C 17 物件能否安全連結在一起?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板