使用clang xcode 9编译iOS armv7+arm64的C代码



我正在尝试为armv7和arm64制作一个二进制文件。我使用这个命令来编译一个简单的C文件:

clang -arch arm64 hello.c -o hello -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk

如何将armv7添加到该命令中以支持像iPad4这样的旧设备?知道xCode 9在iOS 11中停止支持armv7吗?

只需添加-arch armv7:

clang -arch armv7 -arch arm64 hello.c -o hello -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk

这将产生具有两种架构的胖二进制。

同样需要注意的是,您可以使用xcrun来避免必须提供完整的系统根:

xcrun -sdk iphoneos clang -arch armv7 -arch arm64

作为Siguza答案的更新,从Xcode 11开始获取SYSROOT的方法是:

xcrun --sdk iphoneos --show-sdk-path

最新更新