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

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

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


当前回答

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

其他回答

使用菜单项目->构建设置->

然后从“有效架构”中删除armv7s。 如果选择了standard,那么删除它,然后添加armv7。

以防这种事发生在某人身上。我建立了自己的库,与第三方代码一起使用。当我构建它来交付时,我不小心把我的iPhone 4S插在了插头上,所以Xcode只为插在插头上的架构构建了我的库,而不是遵循项目设置。移除任何插入的设备,重建库,链接它,你应该是正确的。

希望能有所帮助。

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

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

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

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

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