Xcode iOS6编译错误:没有架构

时间:2012-10-03 20:58:06

标签: objective-c ios architecture compiler-errors 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).

我做了一些查找并通过进入构建设置修改它来修改有效的体系结构以包含armv7s,并且它做了它想要做的事情。

但是,我添加了这个错误

ld: file is universal (3 slices) but does not contain a(n) armv7s slice: some static library framework for architecture armv7s

经过一番看,我觉得静态库框架引起了所有问题,因为它不支持iOS 6,我不太乐观,可以轻松修复。然而,由于我无法在网上查明我的确切情况,我希望有人比我更了解这一点并且可以帮助我。感谢

注意:静态库在代码中无处不在,删除它几乎不是一个选项

5 个答案:

答案 0 :(得分:10)

您可以尝试更改“仅构建活动架构”是 - >没有。适合我。

答案 1 :(得分:5)

为了构建,应用程序链接的所有静态库必须为所有应用程序的体系结构生成代码。

看起来Xcode 4.5已经更新了你的项目以构建armv7s代码,但它忽略了将armv7添加到应用程序的活动架构中。

一旦你修复了它,看起来问题是静态库没有生成armv7s代码,但你的应用程序正在尝试为armv7s构建。

如果这是问题,有两种方法可以解决这个问题。您希望您的应用程序仅生成armv7代码(不再需要armv7s代码),您需要将应用程序的目标设置更改为:

enter image description here

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

enter image description here

armv7代码将在3gs以上的任何内容上运行。 armv7s代码只能在iPhone 5上运行,而且会稍快一些。

因此,如果您可以访问要测试的iPhone 5,并且您拥有静态库的源代码,那么第二个选项可能是最佳选择。否则,假设你的库至少生成了armv7代码,那么只要你的应用程序没有尝试构建armv7s,你也应该没问题。

如果库只构建armv6代码(xCode 4.5不支持),则需要更改其构建设置以生成至少armv7代码。

答案 2 :(得分:2)

Xcode 4.5不再支持armv6,因此您需要删除此架构。

正如您已经发现的那样,您使用的库似乎不支持armv7,这对于现在至关重要。

我认为除了使用正确的目标编译库之外别无选择。如果您有源代码,这应该是微不足道的;如果它是第三方,你依赖它们进行更新。然而,他们会知道,如果没有更新他们的图书馆已经到了生命的终点。

答案 3 :(得分:1)

我有类似的问题。通过在Target Project的Build设置中将'Build active Architecture Only'更改为'NO'来解决它。

enter image description here

答案 4 :(得分:0)

删除armv7s并添加armv7(和/或armv6)

相关问题