首页 > 解决方案 > 当我为 iOS 编译某些东西时,使用了哪些架构?

问题描述

我尝试了解 iOS 的不同架构,以及何时需要。

我有一个Hello World示例。我的假设是否正确,如果我在 Xcode Simulator 中运行它,我需要编译所有内容,包括我的 x64 依赖项(因为它在我的计算机上运行)。

对于我附加的 iPhone,它只针对该架构进行编译。对于通用 iPhone,我的示例将是一个多架构应用程序 (arm64 arm64 armv7 armv7e),因此它可以在各种架构上运行。那是对的吗?

感谢您的洞察力。

PS因此,如果我的示例链接foo.a,但foo.a只是arm64 arm64 armv7 armv7e而不是 x64,我可以为 iPhone 编译我的应用程序,但不能在我的模拟器中运行它

标签: iosiphonexcode

解决方案


尽管上面列出了两个 arm64,但这基本上是正确的;它应该是 arm64 和 arm64e。

至于构建什么架构,取决于“仅构建活动架构”设置。典型的 Debug 配置将此设置为 Yes,因此它仅针对您所针对的设备的体系结构构建。

发布配置将此设置为否,因此它会针对“架构”中指定的所有架构进行编译,通常是$(ARCHS_STANDARD)您列出的架构。

至于您的 PS,您是正确的,.a只有 ARM 拱门的文件无法链接到模拟器目标。


推荐阅读