我如何找出我正在使用 Apple 的 Clang 编译的 ARM 变体?
How do I find out what variation of ARM I'm compiling for with Apple's Clang?
我正在使用 clang 从 C 和 C++ 代码构建 iOS 软件(在命令行 - 出于好的但复杂的原因),并且想知道编译器针对的是 ARMv8 的哪个变体(例如, 8、8.3 等)。一个相关的问题:clang how to list supported target architectures,但很多答案依赖于 llc 等工具,Apple 的 Xcode.
中没有提供这些工具。
这很简单,一旦您了解了操作方法。一个有用的工具是绝对最小的 C 程序,不包含:
main( int argc, char *argv[])
{
return 0;
}
使用 --verbose 选项编译它,这会使编译器产生大量关于其工作的输出。例如,
clang -arch arm64 -fexceptions -std=c99 --verbose minimal_c_program_with_no_includes.c
实际上是针对 ARM macOS 的编译,并产生以下输出:
-triple arm64-apple-macosx11.0.0 -main-file-name minimal_c_program_with_no_includes.c
-target-sdk-version=11.0 -target-cpu vortex -target-feature +v8.3a
-target-feature +fp-armv8 -target-feature +neon
而 iOS 14 及更高版本的编译:
clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
-mios-version-min=14.0 -fexceptions -std=c99 --verbose minimal_c_program_with_no_includes.c
产生:
-triple arm64-apple-ios14.0.0 -main-file-name minimal_c_program_with_no_includes.c
-target-sdk-version=14.2 -target-cpu apple-a7 -target-feature +fp-armv8
-target-feature +neon
-target-sdk-version 值是因为我使用的是 Xcode 12.2,它有 iOS 14.2 SDK。
我正在使用 clang 从 C 和 C++ 代码构建 iOS 软件(在命令行 - 出于好的但复杂的原因),并且想知道编译器针对的是 ARMv8 的哪个变体(例如, 8、8.3 等)。一个相关的问题:clang how to list supported target architectures,但很多答案依赖于 llc 等工具,Apple 的 Xcode.
中没有提供这些工具。这很简单,一旦您了解了操作方法。一个有用的工具是绝对最小的 C 程序,不包含:
main( int argc, char *argv[])
{
return 0;
}
使用 --verbose 选项编译它,这会使编译器产生大量关于其工作的输出。例如,
clang -arch arm64 -fexceptions -std=c99 --verbose minimal_c_program_with_no_includes.c
实际上是针对 ARM macOS 的编译,并产生以下输出:
-triple arm64-apple-macosx11.0.0 -main-file-name minimal_c_program_with_no_includes.c
-target-sdk-version=11.0 -target-cpu vortex -target-feature +v8.3a
-target-feature +fp-armv8 -target-feature +neon
而 iOS 14 及更高版本的编译:
clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
-mios-version-min=14.0 -fexceptions -std=c99 --verbose minimal_c_program_with_no_includes.c
产生:
-triple arm64-apple-ios14.0.0 -main-file-name minimal_c_program_with_no_includes.c
-target-sdk-version=14.2 -target-cpu apple-a7 -target-feature +fp-armv8
-target-feature +neon
-target-sdk-version 值是因为我使用的是 Xcode 12.2,它有 iOS 14.2 SDK。