我最近刚升级到新的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)
我已经尝试了一切 - 清洁,重新导入,改变架构......
请帮忙
答案 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'代替。