我升级了Xcode版本,当使用外部静态库时,我得到了这样的消息:

Ld: file是通用的(3片),但不包含(n) armv7s slice: /file/location for架构armv7s Clang:错误:连接器命令失败,退出码为1(使用-v查看调用)

如果库的开发人员还没有更新他们的库,有什么方法可以绕过这个库并添加对库的支持吗?


当前回答

我只是在目标的构建设置中将“仅构建活动架构”切换为“是”,现在就OK了!

其他回答

我只是在目标的构建设置中将“仅构建活动架构”切换为“是”,现在就OK了!

尝试从项目的“有效架构”中删除armv7s,以解决iOS 5.1手机的这个问题

在我的例子中,我链接到一个有点旧的第三方库(为iOS 6开发,在XCode 5 / iOS 7上),因此,我必须更新第三方库,执行清洁和构建,现在它成功构建了。

我刚刚在这里发布了一个修复,它也适用于这种情况——基本上,你在你的外部库中做了一个十六进制查找和替换,使它认为它是ARMv7s代码。您应该能够使用lipo将其分解为3个静态库,复制/修改ARMv7,然后再次使用lipo为所有4个架构组装一个新库。

如果你想删除对任何架构的支持,例如,在你的情况下,ARMv7-s,使用菜单项目->构建设置->从“有效架构”中删除架构。

您可以将此作为临时解决方案,直到库更新完成。您必须从主项目中删除架构,而不是从库中删除架构。

或者,您可以将调试配置的“仅构建活动体系结构”的标志设置为Yes。将发布配置的“Build Active Architecture Only”设置为No,这样在发布之前就会收到提醒,提醒您应该升级正在使用的任何第三方库。