2012-09-22 63 views
9

我最近剛升級到新的XCode。升級後,我的一些應用程序將無法構建。我得到這個錯誤:CommonCrypto不適合拱門armv7 iOS

ld: cannot link directly with /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/system/libcommonCrypto.dylib. Link against the umbrella framework 'System.framework' instead. for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我用盡了一切 - 清洗,重新導入,改變架構...

請幫

+4

轉到您的目標構建步驟,在「鏈接庫」下,刪除libcommonCrypto.dylib。 –

+0

請注意,在做tc說的時候,不要把它移到垃圾箱。如果你這樣做,你會得到「ld:in /usr/lib/system/libcommonCrypto.dylib」,對於架構armv7,在文件/usr/lib/system/libcommonCrypto.dylib(2個slice)中缺少必需的架構armv7。只需從垃圾箱中取回即可。 – Jochem

+0

@tc。爲什麼要刪除libCommonCrypto.dylib? – onmyway133

回答

3

我只是解決了這個如下:

事實該libcommonCrypto.dylib錯誤是一個紅鯡魚。

按照上面的建議刪除libcommonCrypto.dylib後,我得到了9個新錯誤。乍一看,我認爲他們是加密錯誤,但事實上他們並不是;對我來說,它實際上追溯到zLib沒有被包含在內,這是在整個實現的深層部分(其中加密是其一部分)「導入」的。

對於我具體地說,追溯到ASIDataDecompressor.h,#IMPORT < zlib.h>

我通過包括缺少libz.dylib框架固定它;最終,我不必明確包含libcommonCrypto.dylib。

因此,請務必在切換libcommonCrypto後仔細檢查錯誤,並確保一些OTHER庫不會丟失。

16

我在嘗試了上述兩種方法都不適合我之後,以不同的方式解決了此問題。

的問題是,當我將在主界面的庫(主構建的設置...等),我最初尋找crypto,然後有兩隻庫回來libcorecrypto.dylibliblibcommonCrypto.dylib,如果你注意到,無論存在灰色不同於通常添加的黃色色塊。添加這些會導致編譯器報告(某些其他庫缺失,比如libz或者需要的其他庫,所需功能越多)

如果您發現上述兩個庫通常位於JavaScriptCore.framework庫(其是黃色的),因此,通過去除上述兩個並加入JavaScriptCore.framework代替,這個問題得到了解決,並且build successful顯示

還可根據現有作爲內部JavaScriptCore.framework束灰度庫提及的是,如上所述,libcrypto和另一個不會存在於/Library/.../system/path之下,即您沒有將它們從您的系統中刪除,它們只是不在那裏。

此外,該解決方案是:

* 從你的主要Xcode項目設置,不添加: * DD

libcorecrypto.dylib 
liblibcommonCrypto.dylib 

相反,添加:

JavaScriptCore.framework 

在你的。M(代碼),只是他們來源通常這樣做:

#include <CommonCrypto/CommonDigest.h> (or any of your other libs as needed in code)... 

它應該工作的罰款。

我希望這會有所幫助。

親切的問候

+0

謝謝你......它的工作原理+ 1 – abhi1992

+0

#import - not #include – ETech

0

我使用的CocoaPods圖書館管理。其中一個庫(您可以在工作區中進行簡單搜索)包含對CommonCrypto.framework的引用,它在其項目設置中的框架列表中顯示爲紅色。

在我的情況下,我不得不刪除對CommonCrypto.framework的依賴關係,但是這個解決方案只持續到你的pod的另一個更新。

btw我想知道一個命令來列出Podfile中的庫之間的依賴關係圖。

0

我有同樣的錯誤,

ld: in '/usr/lib/system/libcommonCrypto.dylib', missing required architecture arm64 in file /usr/lib/system/libcommonCrypto.dylib (2 slices) for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

我通過檢查我的$ PATH解決了這個問題。 這是一個丟失的文件

使用find/-type f -name libcommonCrypto.dylib

我的庫與我的朋友Mac系統相比,它表明該文件不存在我的電腦上:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/system/libcommonCrypto.dylib

Xcode的使用上/usr/lib/system/libcommonCrypto.dylib $ PATH回退,但它不是好建(i386替代手臂的東西)。

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/system/複製我的朋友的版本,移動,然後我能夠重新建立我的項目。

有惡性問題就在這裏引起有這個LIB根據您的體系有很多相同的文件,其中大部分不打算使用的iOS版本。但是當在專用目錄上找不到文件時,$ PATH env var將回退到/ usr/lib。上/usr/lib/system/libcommonCrypto.dylib

Xcode的回退,但是這絕對不是正確的lib因爲它不是爲iOS建的,但我的Mac內置。

0

Better Solution,因爲它說刪除libcommonCrypto.dylib,並通過添加SystemConfiguration.framework.It爲我更換,可能是有用的someone.I是得到了鏈接錯誤說gettingLink對傘架「System.framework」而不是