为什么iOS模拟器需要i386和x86_64符号,即使我只在x86_64系统上?

时间:2015-01-19 21:18:56

标签: ios-simulator x86-64 i386

我正试图让一个在模拟器上运行的应用程序之前遇到了一些问题。我们没有为i386构建的libjpeg.a,但它确实有x86_64。这是唯一的依赖,但我想知道为什么我实际上需要i386符号,如果我在x86_64 mac上运行。

4 个答案:

答案 0 :(得分:23)

iOS模拟器可以在32位和64位模式下运行您的应用程序。这可以让你解决很多64位问题,并确保它已经为armv7和arm64做好了准备。为此,它会为i386和x86_64编译您的应用程序,并且需要两个体系结构的库。

答案 1 :(得分:12)

iOS应用需要在许多不同的架构上运行:

arm7: Used in the oldest iOS 7-supporting devices
arm7s: As used in iPhone 5 and 5C
arm64: For the 64-bit ARM processor in iPhone 5S
i386: For the 32-bit simulator
x86_64: Used in 64-bit simulator

答案 2 :(得分:11)

实际上 i386 架构适用于iPhone模拟器,其中 x86_64 架构适用于iPad模拟器,两者兼容32位和64位。

答案 3 :(得分:0)

这些天,我尝试运行Fastlane来获取iOS屏幕截图,但我发现了同样的情况:因为.a库只包含x86_64体系结构,而没有i386体系结构,然后出现此错误:

Undefined symbol(s) for architecture i386

它正在iPhone 8的{​​{1}}模拟器上运行。

但是您可以强制模拟器仅在iOS 11.464-bit上运行,如下所示:

32-bit