首页 > 后端开发 > C++ > C 11、C 14 和 C 17 对象能否安全链接在一起?

C 11、C 14 和 C 17 对象能否安全链接在一起?

Linda Hamilton
发布: 2024-12-04 08:07:17
原创
732 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板