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

Daf*_*zer 403 xcode objective-c static-libraries ios ios6

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

ld:文件是通用的(3个切片)但不包含(n)armv7s切片:/ file/location for architecture armv7s clang:error:linker命令失败,退出代码为1(使用-v查看调用)

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

Nic*_*las 418

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

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

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

  • 您不必重新编译库.您可以从使用该库的项目中删除此标志. (11认同)
  • 从Valid Architectures列表中删除armv7s对我有用,但是从架构中删除它也是如此.但是,在这两种情况下,我都会从链接器中获取"没有架构编译(ARCHS = i386,VALID_ARCHS = armv7).",我只能通过将`i386`添加到Valid Architectures列表来解决. (6认同)
  • 不,armv7s是在iPhone 5中使用的A6处理器的指令集.由于A6向后兼容,它仍将运行armv7指令集. (6认同)
  • 它将起作用,因为尚未使用armv7s支持编译的旧应用程序也必须运行.但是你会失去一些特定的优化.无论如何,这应该是一个临时的解决方法. (4认同)
  • Dropbox框架已针对此问题进行了更新,请参阅https://forums.dropbox.com/topic.php?id=90014 (2认同)

Bla*_*o73 191

我只是在目标的构建设置中将"Build Active Architecture Only"切换为"Yes",现在就可以了!

  • 这怎么可能是一个很好的解决方案.它消除了错误,但您只能获得当前拱门的构建,而不是所有市场上的构建...... (15认同)

Art*_*Jen 27

尝试从项目的"有效架构"中删除armv7s,以便从iOS 5.1手机的此问题中解脱出来


Ert*_*lle 13

我刚刚发布了一个修复这里也将适用于这种情况下-基本上,你做你的外部库六角查找和替换,使之认为这是ARMv7s代码.您应该可以使用lipo它将其分解为3个静态库,复制/修改ARMv7,然后lipo再次使用为所有4个体系结构组装新库.


小智 5

iPhone 5的乱舞支持(ARMv7s)正如我在昨天的帖子中所提到的,Flurry在周三公布之后立即开始研发iOS SDK版本以支持新iPhone 5中的ARMv7s处理器.

我很高兴地告诉您,工作已完成,SDK现已在网站上提供.