Alternate titles (to aid search):
- Xcode Build Phase script fails
- Xcode fail with "make[1]: cc: No such file or directory"
- Building for simulator fails, building for device works
- Xcode fails to build for i386, but will for armv6 & armv7
我有一个 OpenSSL Xcode 项目,它使用 Build Phase 脚本为 iOS 编译 libcrypto.a
和 libssl.a
静态库(它也适用于 Mac OS X)。
device
的构建没有问题,libcrypto.a
和 libssl.a
已创建并可以链接到项目中。
但是,尝试为模拟器
构建相同的库会导致构建错误:
cc -I. -I.. -I../include -D_DARWIN_C_SOURCE -UOPENSSL_BN_ASM_PART_WORDS -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk -c -o cryptlib.o cryptlib.c
make[1]: cc: No such file or directory
make[1]: *** [cryptlib.o] Error 1
make: *** [build_crypto] Error 1
设置之间似乎没有什么区别,唯一的变量是体系结构; armv7
对比 i386
。
最佳答案
从 Xcode 4.3 开始,Apple 停止将命令行工具作为 Xcode 的标准捆绑。
此问题是由于 Xcode 尝试对设备(armv6 和 armv7)和模拟器 (i386) 使用不同的编译器造成的。
在 armv6 和 armv7 的构建阶段脚本中,Xcode 将使用捆绑工具(在问题中 cc
(clang) compile)。但对于模拟器构建,构建阶段脚本使用系统版本。
如果您没有明确安装工具,构建将失败。
要安装工具,请选择 Xcode > Preferences > Downloads
然后单击“命令行工具”的“安装”。
关于ios - 在 Xcode 4.3 上为模拟器构建 OpenSSL 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9719156/