如何通过Apple Clang查询编译目标对应的ARM架构具体版本?
如何在Xcode自带clang环境下查询编译目标的ARMv8架构具体变体版本
- 方法一:通过预定义宏查询当前编译目标的实际架构版本
该方法可以直接输出你当前编译参数对应的ARM架构版本,无需依赖额外工具,执行以下命令即可,注意将[你的编译参数]替换为你实际编译时使用的目标相关参数(如-target、-arch、-miphoneos-version-min、-mcpu等):
命令执行后输出的clang -dM -E - < /dev/null [你的编译参数] | grep -i arm_arch__ARM_ARCH宏的值即为对应的架构版本:如输出#define __ARM_ARCH 8代表目标为ARMv8,输出#define __ARM_ARCH 8.3代表目标为ARMv8.3,以此类推。 - 方法二:查询当前clang支持的所有ARM架构变体
如果你需要查看当前Xcode版本的clang支持的全部ARMv8相关目标,可以执行以下命令:
输出结果会列出所有支持的CPU型号,你可以根据Apple芯片的官方架构对应关系判断对应的ARMv8版本,比如apple-a12对应ARMv8.3、apple-a13对应ARMv8.4。clang --print-supported-cpus | grep -i 'aarch64\|arm'
注意:查询时必须带上你实际编译使用的所有目标相关参数,否则查询到的是clang默认目标的架构版本,和你实际编译时使用的版本可能不一致。
内容的提问来源于stack exchange,提问作者John Dallman
相关产品推荐
相关产品推荐

