Apple Clang编译器版本架构架构
Apple clang compiler versioning schema?
不久前,gcc> = 5和clang> = 4编译器更改了其版本编号的语义,因此任何非BugFix版本中的主要版本号都会增加。
苹果在ABI兼容性方面是否遵循与Clang编译器的任何版本化架构?我想知道apple-clang 9.0
是否与9.1
兼容。
苹果在每个Xcode版本中都会颠簸其编译器版本号,因此查找ABI更改的适当位置是Xcode Release Notes。我能发现有Xcode 6的最新ABI更改:
Xcode 6中的LIBC 标头包括一个更改以使STD :: Pair具有微不足道的构造函数。此修复程序对于性能和符合C 标准很重要,但是使用std :: Pair。
更改C 代码的ABI。
这意味着自2014年以来没有ABI变化。
edit :clang和apple-clang之间的映射似乎是(从此处拿走,并通过功能测试来添加最后一行(:
5.1 -> 3.4
6.0 -> 3.5
7.0 -> 3.7
7.3 -> 3.8
8.0 -> 3.9
9.0 -> 4.0
9.1 -> 5.0
所以我猜苹果会在主要Xcode版本之间从Mainline Clang整合到Apple-clang的次要版本。
。但对于原始的问题,这并不重要:语言的ABI兼容性直到他们这样说,这对于标准库是可能的(但很少发生(,并且对于核心语言几乎是不可想象的。对于GCC,Apple甚至保证不做后者,但可能会忘记更新文档时更新Clang:
:因为GCC 4.0符合ITANIUM C ABI,C 对象为 链接与其他OS X编译器构建的对象互相兼容 符合此规范。苹果保证未来发布 OS X的GCC也将符合ITANIUM C ABI。这意味着 开发人员可以安全地运送动态共享库 接口涉及C 类,尽管有一些警告:
- Apple仅保证仅针对核心语言功能的ABI稳定性。它 不能保证图书馆课的稳定性,包括 STD :: String,STD :: MAP和STD :: Ostream等。
但是,由于gcc
命令链接到Apple-Clang的任何近期Xcode安装,此保证也应适用于后者。
- CMake 库链接使用两个不同的编译器版本
- 我的设备上的 C++ 编译器版本是什么
- 不同版本的编译器(例如GCC)是否会产生不同的性能?
- 为什么库API+编译器ABI足以确保具有不同版本gcc的对象之间的兼容性
- 检测到 Conan 配置文件设置与 CMake 之间的编译器版本不匹配
- 是否根据编译器版本有条件地包含源文件
- 如果使用低于 VS2015 的 vc++ 编译器版本编译,则 DLL 中的访问冲突
- 在Travis中为CMAKE构建指定编译器版本
- 是否有编译器标志可以使较新的 gcc 版本像旧版本一样构建
- Apple Clang编译器版本架构架构
- GCC编译器,为较低版本的GCC编译应用程序
- 功能模板与Variadic模板过载:Intel C 编译器版本18产生的结果不同于其他编译器.英特尔是错误的
- Boost bjam 不会将编译器版本放在文件名中
- 具有C 接口的C 动态库如何在不同的编译器版本之间不会破坏ABI
- 不同编译器版本的C++中的奇怪行为(字符串通过引用传递):参见简单的程序说明
- 在不同的编译器版本中调用new[]和delete[]
- c++ 编译器优化是否可以针对布尔参数生成两个版本的函数
- 具有状态的Microsoft编译器版本19.16.27024.1的问题
- Node.js C 插件开发的编译器版本
- unix中的C 编译器版本