9

我最近刚刚升级到新的 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)

我已经尝试了一切——清理、重新导入、更改架构......

请帮忙

4

5 回答 5

17

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

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

如果您注意到上述两个库通常位于JavaScriptCore.framework库下(即黄色库),因此,通过删除上述两个并添加JavaScriptCore.framework,问题得到解决,并build successful显示

还要提一下,基于其中作为捆绑包存在的 gray-libs 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)...

它应该可以正常工作。

我希望这有帮助。

亲切的问候

于 2013-11-06T09:39:41.617 回答
3

我刚刚解决了这个问题:

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

按照上面的建议删除 libcommonCrypto.dylib 后,我得到了 9 个新错误。乍一看,我以为它们是加密错误,但实际上不是;对我来说,它实际上可以追溯到 zLib 没有被包括在内,它是在整体实现的更深部分中“导入”的(其中加密是其中的一部分)。

对我来说,它可以追溯到 ASIDataDecompressor.h, #import < zlib.h>

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

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

于 2013-04-16T20:49:27.663 回答
0

更好的解决方案,正如它所说的删除 libcommonCrypto.dylib,并通过添加 SystemConfiguration.framework 来替换。它对我有用,可能对某人有用。我收到链接器错误,说gettingLink 是针对伞形框架“System.framework”

于 2015-03-17T10:41:22.523 回答
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 使用 $PATH 后备,/usr/lib/system/libcommonCrypto.dylib但它不是很好的构建(i386 而不是 arm 的东西)。

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

这里有一个恶性问题,因为这个库有很多相同的文件,具体取决于您的架构,并且其中大多数不打算用于 ios 构建。但是,当在专用目录上找不到文件时,$PATH env var 将回退到 /usr/lib。

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

于 2014-10-03T13:42:42.870 回答
0

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

在我的情况下,我必须删除对 CommonCrypto.framework 的依赖,但是这个解决方案只持续到你的 pod 的另一个更新。

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

于 2014-04-08T17:48:11.500 回答