2012-10-03 115 views
7

所以我最近更新Xcode到4.5,并能够得到我的手在iOS6手机上。我正在模拟器上进行测试(4.3/5.1/6.0),但是当我决定在实际的iOS 6手机上构建时,它给了我这个错误。Xcode iOS6编译错误:没有体系结构

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中,我不是太乐观它可以很容易地修复。然而,因为我无法在网上证明我的确切情况,所以我希望有人比我更了解这一点,可以帮助我。由于

注:即静态库是无处不在的代码,删除它是非常不是一个选项

回答

2

的Xcode 4.5不支持ARMv6的了,所以你需要删除这个架构。

正如你已经发现的那样,你使用的库似乎不支持armv7,现在它是必不可少的。

我认为没有其他选择来编译正确的目标库。如果你有源代码,这应该是微不足道的;如果它是第三方,则取决于他们进行更新。但是,他们会知道,没有更新他们的图书馆已经达到了生命的尽头。

+0

雅只是它的静态库需要更新,我试过克里斯的建议,但它没有奏效。 – user1289479

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代码。

+0

嗯,我真的不能删除armv7s架构,因为它会再次给我没有架构错误,但我怎么把它添加到静态库? – user1289479

+0

对不起,应该已经更清楚了。将编辑。 –

0

删除armv7s和添加的ARMv7(和/或用于ARMv6)

+0

有效架构:(之前)armv6 armv7 i386 (之后)armv6 armv7 i386 armv7s 我不得不添加它来摆脱无架构编译错误 – user1289479

+0

您可以更改基础SDK到iOS 5并运行它吗?无法记住我的头顶。 – Vinnie

10

您可以尝试更改“仅生成活动架构”是 - >否。适合我。

1

我也有类似的问题。通过在“目标项目的构建设置”中将“仅将构建活动架构”更改为“否”来解决问题。

enter image description here

相关问题