2012-03-15 46 views
4

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

回答

8

從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