CommonCrypto不是为archv7 iOS构建的

时间:2012-09-22 21:07:26

标签: ios xcode armv7

我最近刚升级到新的XCode。升级后,我的一些应用程序将无法构建。我收到这个错误:

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)

我已经尝试了一切 - 清洁,重新导入,改变架构......

请帮忙

5 个答案:

答案 0 :(得分:17)

在我尝试了上述两种方法之后,我以不同的方式解决了这个问题。

问题在于,当我从主界面(主要构建设置等)添加库时,我最初搜索的是crypto,然后两个库返回libcorecrypto.dylib和{ {1}},如果您注意到,两者都存在灰色,而不像通常添加的通常为黄色的库。添加这些会导致编译器报告(其他一些库缺失,例如libz,或者需要更多功能的其他库。

如果您注意到上述两个库通常位于liblibcommonCrypto.dylib库(黄色库)下,因此,通过删除上述两个并改为添加JavaScriptCore.framework,问题就解决了, JavaScriptCore.framework显示

另外要提到的是,基于作为build successful内部的包存在的灰色库,libcrypto和另一个将不存在于上面提到的JavaScriptCore.framework下,即你没有删除他们来自你的系统,他们只是不在那里。

同样,解决方案是:

* 从您的主要XCODE项目设置中,不要添加: * dd

/Library/.../system/path

而是添加:

libcorecrypto.dylib 
liblibcommonCrypto.dylib

在你的.m(代码)中,只需通过以下方式获取它们:

JavaScriptCore.framework

它应该可以正常工作。

我希望这会有所帮助。

亲切的问候

答案 1 :(得分:3)

我刚刚解决了这个问题:

事实证明,libcommonCrypto.dylib错误是一个红色的鲱鱼。

如上所述删除libcommonCrypto.dylib后,我收到9个新错误。 乍一看,我认为它们是加密错误,但实际上它们不是;对我来说,它实际上追溯到zLib不被包含在内,它被“导入”在整个实现的更深层部分(其中加密是其中的一部分)。

具体来说,它追溯到ASIDataDecompressor.h,#import< zlib.h>

我通过包含缺少的libz.dylib框架来修复它;最终,我没有明确包含libcommonCrypto.dylib。

因此,请务必在切换libcommonCrypto后仔细检查错误,并确保不丢失某些OTHER库。

答案 2 :(得分:0)

我正在使用cocoapods进行图书馆管理。其中一个库(您可以在工作区中进行简单搜索)包含对CommonCrypto.framework的引用,它在项目设置的框架列表中是红色的。

在我的情况下,我不得不删除对CommonCrypto.framework的依赖,但此解决方案仅持续到您的pod的另一个更新。

顺便说一下,我想知道一个命令,列出Podfile中库之间的依赖关系图。

答案 3 :(得分: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

将我的libs与我的朋友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而不是arm)。

我复制了我朋友的版本,移入/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/system/,然后我又能够再次构建我的项目。

这里存在一个恶性问题,因为根据您的体系结构,此lib存在大量相同的文件,并且大多数文件不适用于ios构建。但是,当在专用目录上找不到文件时,$ PATH env var将回退到/ usr / lib。

Xcode回退/usr/lib/system/libcommonCrypto.dylib,但这绝对不是正确的lib,因为它不是为ios构建的,而是为我的mac构建的。

答案 4 :(得分:0)

Better Solution,因为它说删除libcommonCrypto.dylib,并通过添加SystemConfiguration.framework替换。它对我有用,可能对某人有用。我得到链接器错误说 gettingLink反对伞框架'System.framework'代替