Xcode 6 标准架构不包括 armv7s

Posted

技术标签:

【中文标题】Xcode 6 标准架构不包括 armv7s【英文标题】:Xcode 6 Standard architectures exclude armv7s 【发布时间】:2014-06-04 14:40:13 【问题描述】:

我正在试验 Xcode 6 Beta,并注意到 armv7s 从标准架构中消失了。我确实浏览了 Xcode 6 发行说明,但没有看到其中的变化。任何人都可以确认此更改吗?

Xcode 5.1.1:

Xcode 6 测试版:

更新

ios 8 Beta 论坛上也有一个帖子讨论这个话题。 https://devforums.apple.com/thread/244407?tstart=0

另请注意@ThomasW 有一个关于将 armv7s 添加到架构的答案。

【问题讨论】:

只有一个问题,你为什么使用 Xcode 5.1GM 而不是 5.1.1? 感谢您指出这一点,我有很多版本的 Xcode。现在是 5.1.1。 Xcode 6 GM 中仍在发生这种情况! 似乎又是 ARM64E。 【参考方案1】:

我还为此提交了一个错误,并得到回复说这是故意的。如果你想为 armv7s 构建,你必须手动添加架构。我现在知道为什么会做出这种改变。如果我得到更多信息,我会更新这个。

更新来自开发者论坛:

包含 armv7s 的原因是边际向后兼容性。但是the general differences between armv7 and armv7s instruction sets are minor。因此,如果您选择不包含 armv7s,目标 armv7 机器代码在 32 位 A6 设备上仍然可以正常运行,几乎不会注意到性能差距。

-- Zhou Yang

【讨论】:

我确实有一个想法。 armv7s 仅用于 3 个设备,其中引入的浮点指令的性能提升非常具体。删除它可以节省空间,而对绝大多数人来说没有任何损失。 @Florian 我用为什么的相关信息更新了你的答案。 现在我们在 iOS 9 中有 Bitcode 和 App Thining,我想知道 App Store 是否会为 iPhone 5 构建 armv7s 等。【参考方案2】:

来自@vladof 在 Apple 论坛上的帖子,如果您需要包含 armv7s 支持,您需要手动添加。您可以通过将架构设置更改为如下方式来实现:

如果您正在构建一个库并且用户希望 armv7s 切片可用,您可能希望这样做。

【讨论】:

@EvaMadrazo 我正在使用这种技术,但 Xcode 6.0.1 或 Xcode 6.1 beta 2 都没有出错。【参考方案3】:

请注意,这个答案是在任务的早期阶段做出的,当 Xcode 6.0 GM 出来时,没有检查答案。这仅用于跟踪,有关详细信息,请参阅其他答案。

这似乎是 Xcode 6 Beta 的一个错误,根据 Apple 论坛上的 this 线程。已打开一个错误。

【讨论】:

我正在使用 XCode 6.0.1,但仍然会发生这种情况 :( Apple 的回复似乎表明 armv7s 支持已从标准架构中删除,这是预期的行为。 (尽管在 Apple 的发行说明中没有提及这一点是他们的巨大疏忽。)

以上是关于Xcode 6 标准架构不包括 armv7s的主要内容,如果未能解决你的问题,请参考以下文章

arm64 armv7 armv7s 架构设置

build.sh ios 使用 XCode6 Beta6 时生成“架构 armv7 的未定义符号”

警告:架构“armv7 armv7s”不包含所有必需的架构“arm64”

XCode 5 - 架构 armv7 的未定义符号:

如何将 armv7s 架构添加到 xcode 7 / ios 9 中的静态库?

XCode - 架构 armv7 arm64 的未定义符号