我正试图让一个在模拟器上运行的应用程序之前遇到了一些问题。我们没有为i386
构建的libjpeg.a,但它确实有x86_64
。这是唯一的依赖,但我想知道为什么我实际上需要i386
符号,如果我在x86_64
mac上运行。
答案 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.4
或64-bit
上运行,如下所示:
32-bit