我在使用最新的 Xcode 7-beta clang 编译适用于 iOS 9 的 C 库 (gmp) 时遇到问题。我正在尝试生成位码以使 Xcode 中的所有警告停止(并且我想以位码生成这些库)。但是,我什至无法首先编译该库。 ./configure 失败,查看 config.log 后,似乎 ld 是问题所在,因为它失败并显示“ld:找不到 -lSystem 的库”。这是我过去用来编译 gmp 的命令:
./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/ -L /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/ -miphoneos-version-min=7.0 -arch armv7 -target arm-apple-darwin
The
-L /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
我添加的标志是为了看看这是否有助于 ld 找到要链接的所需库,但无论我是否包含该选项,它都会失败并出现相同的错误。我没有在上面的命令中包含编译为位码的选项,因为我什至无法使用我以前使用的相同命令首先对其进行编译。我注意到,当我将 gmp .a 文件添加到“链接二进制文件与库”下的 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 时也有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)