文件是通用的(三个切片),但它不包含一个(n) ARMv7-s切片错误的静态库在iOS上,无论如何要绕过?

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

ld: file是通用的(3片),但不包含(n) armv7s slice: /file/location for架构armv7s Clang: error: linker命令失败,退出代码1(使用-v查看调用)

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

163891 次浏览

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

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

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

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

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

Flurry支持iPhone 5 (ARMv7s) 就像我在昨天的文章中提到的,Flurry在周三发布新iPhone 5后立即开始开发iOS SDK版本,以支持ARMv7s处理器

我很高兴地告诉你,工作已经完成,SDK现在可以在网站上使用。

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

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

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

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

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

希望能有所帮助。