文件是通用的(三个片),但对于iOS上的静态库,它不包含(n)个ARMv7-s片错误,是否要绕过?

文件是通用的(三个片),但对于iOS上的静态库,它不包含(n)个ARMv7-s片错误,是否要绕过?,ios,objective-c,xcode,ios6,static-libraries,Ios,Objective C,Xcode,Ios6,Static Libraries,我升级了版本,当使用外部静态库时,我收到以下消息: ld:文件是通用的(3个片),但不包含架构armv7s的(n)armv7s片:/file/location 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用) 如果库的开发人员尚未更新其库,是否有任何方法绕过此操作并向库添加支持?如果要删除对任何体系结构的支持,例如,在您的情况下,请使用菜单“项目->构建设置->从“有效体系结构”中删除该体系结构 在库更新之前,您可以将其用作临时解决方案。您必须从主项目中删除体系结构,而不是从库中删

我升级了版本,当使用外部静态库时,我收到以下消息:

ld:文件是通用的(3个片),但不包含架构armv7s的(n)armv7s片:/file/location 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)


如果库的开发人员尚未更新其库,是否有任何方法绕过此操作并向库添加支持?

如果要删除对任何体系结构的支持,例如,在您的情况下,请使用菜单“项目->构建设置->从“有效体系结构”中删除该体系结构

在库更新之前,您可以将其用作临时解决方案。您必须从主项目中删除体系结构,而不是从库中删除


或者,您可以将调试配置的“仅构建活动体系结构”的标志设置为“是”。将发布配置的“仅构建活动体系结构”保留为否,这样在发布之前您会得到一个提醒,即您应该升级您正在使用的任何第三方库。

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

尝试将ARMv7从project的“有效体系结构”中删除,以从iOS 5.1手机的本期发布中释放对iPhone 5(armv7s)的Flurry支持 正如我在昨天的帖子中提到的,Flurry在周三发布后立即开始开发iOS SDK版本,以支持新iPhone 5中的ARMv7s处理器


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

我只是在目标的构建设置中将“仅构建活动体系结构”切换为“是”,现在就可以了

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

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

然后从“有效架构”中删除ARMV7。
如果选择了标准,则删除该标准,然后添加armv7。

以防发生在某人身上。我构建了自己的库,用于第三方代码。当我为交付而构建它时,我不小心让我的iPhone4S插上了电源,所以Xcode只为插上电源的架构而构建了我的库,而不是按照项目设置。卸下所有插入的设备并重建库,链接它,您应该会没事的


希望有帮助。

您不必重新编译库。您可以从正在使用库的项目中删除此标志。它将起作用,因为未使用armv7s支持编译的旧应用程序也必须运行。但您将失去一些特定的优化。无论如何,这应该是一个临时的解决办法。Dropbox框架已经针对这个问题进行了更新。请参阅从有效体系结构列表中删除ARMV7对我来说很有效,但是从体系结构中删除ARMV7也是如此。然而,在这两种情况下,我都无法从链接器中获得编译所需的架构(ARCHS=i386,VALID_ARCHS=armv7)。只能通过将
i386
添加到有效架构列表中来解决。不,armv7s是iPhone 5中使用的A6处理器的指令集。因为A6是向后兼容的,所以它仍然会运行armv7指令集。现在看来这是一个很好的解决方案-@Blasco73你知道自己很棒吗?你应该。好了,先生,你太棒了!这怎么可能是一个好的解决方案。它消除了错误,但您只获得当前arch的构建,而不是市场上的所有构建。。。