use*_*479 7 architecture compiler-errors objective-c ios ios6
所以我最近刚刚将Xcode更新为4.5,并且能够获得iOS6手机.我正在对模拟器进行测试(4.3/5.1/6.0),但是当我决定在实际的iOS 6手机上构建时,它给了我这个错误.
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv6 armv7 i386).
Run Code Online (Sandbox Code Playgroud)
我做了一些查找并通过进入构建设置修改它来修改有效的体系结构以包含armv7s并且它完成了它想要做的事情.
但是,我添加了这个错误
ld: file is universal (3 slices) but does not contain a(n) armv7s slice: some static library framework for architecture armv7s
Run Code Online (Sandbox Code Playgroud)
经过一些看起来我觉得静态库框架导致所有问题,因为它不支持iOS 6,我不太乐观,它可以轻松修复.然而,由于我无法在网上查明我的确切情况,我希望有人比我更了解这一点并且可以帮助我.谢谢
注意:静态库在代码中无处不在,删除它几乎不是一个选项
为了构建,应用程序链接的所有静态库必须为所有应用程序的体系结构生成代码.
看起来Xcode 4.5已经更新了你的项目以构建armv7s代码,但它忽略了将armv7添加到应用程序的活动架构中.
一旦你修复了它,看起来问题是静态库没有生成armv7s代码,但你的应用程序正试图为armv7s构建.
如果这是问题,有两种方法可以解决这个问题.您希望您的应用程序仅生成armv7代码(不再需要armv7s代码),您需要将应用程序的目标设置更改为:

...或者您希望您的应用程序和所有链接的静态库具有如下所示的构建设置:

armv7代码将在3gs以上的任何东西上运行.armv7s代码只能在iPhone 5上运行,而且会稍快一些.
因此,如果您可以访问要测试的iPhone 5,并且您拥有静态库的源代码,那么第二个选项可能是最佳选择.否则,假设您的库至少生成armv7代码,那么只要您的应用程序不尝试构建armv7s,您也应该没问题.
如果库只构建armv6代码(xCode 4.5不支持),那么您需要更改其构建设置以生成至少armv7代码.
Xcode 4.5不再支持armv6,所以你需要删除这个架构。
正如您已经发现的,您使用的库似乎不支持armv7,而现在这是必需的。
我认为除了用正确的目标编译库之外别无选择。如果你有源代码,这应该是微不足道的;如果是第三方的,你就依赖他们来更新。然而,他们会知道,如果不更新,他们的库就已经寿终正寝了。
| 归档时间: |
|
| 查看次数: |
7506 次 |
| 最近记录: |