大厦OpenSSL,以便模拟器失败

问题描述:

Alternate titles (to aid search):大厦OpenSSL,以便模拟器失败

  • 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

我有一个使用构建阶段脚本编写适用于iOS的libcrypto.alibssl.a静态库(它也适用于Mac OS X)OpenSSL的X​​code项目。

建设为device工作没有问题libcrypto.alibssl.a创建并可以链接到项目中。

然而,试图建立相同的库为simulator导致生成错误:

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

+0

有点偏离主题,但因为我刚刚提交这个影响iOS的错误:[SSL_read/SSL_ERROR_WANT_READ/ENOTCONN无限循环](http://rt.openssl.org/Ticket/Display.html?id=2759 ) – smparkes 2012-03-15 17:45:22

+0

“OpenSSL Xcode项目使用构建阶段脚本编译libcrypto.a和libssl.a iOS静态库(它也适用于Mac OS X)”是什么意思。“据我所知,这不是openssl的标准部分。 – 2013-02-14 19:46:04

从Xcode 4.3开始Apple停止将命令行工具捆绑为Xcode的标准配置。

这个问题是由于Xcode尝试使用不同的编译器来为设备(armv6 & armv7)和模拟器(i386)造成的。

在armv6的构建阶段脚本中armv7 Xcode将使用捆绑工具(在问题cc(clang)编译中)。但是对于模拟器构建,构建阶段脚本使用系统版本。

如果您没有明确安装工具,则构建将失败。

要安装这些工具选择Xcode > Preferences > Downloads

Xcode Prefs

,并点击 “安装” 的 “命令行工具”。

+0

谢谢。你为我节省了数小时的研究 – Uri 2012-08-20 14:38:47