从命令行编译 iOS 9 的 C 库,Xcode 7-beta 2

Compiling C Library for iOS 9 From Command Line, Xcode 7-beta 2

我在使用最新的 Xcode 7-beta clang 为 iOS 9 编译 C 库 (gmp) 时遇到问题。我正在尝试生成位码以使 Xcode 中的所有警告停止(并且我想以位码生成这些库)。但是,我一开始甚至无法编译该库。 ./configure 失败,在查看 config.log 之后,似乎 ld 是问题所在,因为它因 "ld: library not found for -lSystem" 而失败。这是我过去用来编译 gmp 的命令:

./configure CC=clang CPP="/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xct‌​oolchain/usr/bin/clang -E" CPPFLAGS="-isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Deve‌​loper/SDKs/iPhoneOS.sdk/ -L /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Deve‌​loper/SDKs/iPhoneOS.sdk/usr/lib/ -miphoneos-version-min=7.0 -arch armv7 -target arm-apple-darwin

-L /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Deve‌​loper/SDKs/iPhoneOS.sdk/usr/lib/

我添加的标志是为了查看这是否有助于 ld 找到 link 所需的库,但无论我是否包含该选项,它都会失败并出现相同的错误。我没有在上面的命令中包含编译成 bitcode 的选项,因为我什至无法使用我以前使用的相同命令首先编译它。我注意到当我将 gmp .a 文件添加到 "link binary with libraries" 下的 xcode 时,ld 找不到库。我必须手动将项目添加到项目设置中的 ld 搜索路径,以便 ld 找到库。这在 Xcode 6 中不是必需的,所以它只是在当前测试版中存在错误,还是我可以做些什么?

好的,这是有效的。使用

将您的 xcode 开发设置为使用新的编译器
sudo xcode-select -s /Applications/Xcode-beta.app

然后,我使用了这个配置:

./configure CC=clang CPP="/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -E" CPPFLAGS="-isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/ -fembed-bitcode -miphoneos-version-min=7.0 -arch armv7 -target arm-apple-darwin" --host=aarch64-apple-darwin --disable-assembly --enable-static --disable-shared --disable-thread-safe --enable-cxx

以上在编译 mpfr 和 mpc 时也有效。