ios - 在 Xcode 4.3 上为模拟器构建 OpenSSL 失败

标签 ios openssl ios-simulator static-libraries xcode4.3

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.alibssl.a 静态库(它也适用于 Mac OS X)。

device 的构建没有问题,libcrypto.alibssl.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

Xcode Prefs

然后单击“命令行工具”的“安装”。

关于ios - 在 Xcode 4.3 上为模拟器构建 OpenSSL 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9719156/

相关文章:

ios - 仅当隐藏文本字段时才使用键盘移动 View

ios5 - iOS 5 转换 UIAccelerometer

ios - 使用程序化自动布局时容器 View 的框架设置为 CGRectZero

ios - 快速动画文本标签

c - 使用 SNI 在一个盒子中提供多个域

javascript - 为什么nodejs加密签名功能只接受privateKey pem格式?

iOS 6 流媒体播放器 com.apple.coremedia.networkbuffering 错误

ios-simulator - 是否可以使用模拟器测试 iOS 8 Handoff 功能?

iphone - 将 CALayer 添加到 UIView 并能够在方向更改时重绘

c - 如何将 Openssl 包含在我的项目中?