mac上的iOS模拟器运行的是i386架构,不是armv7?

Posted

技术标签:

【中文标题】mac上的iOS模拟器运行的是i386架构,不是armv7?【英文标题】:iOS simulator on mac is running i386 architecture, not armv7? 【发布时间】:2011-12-14 01:00:55 【问题描述】:

我已经构建了一些用于 armv7 架构的静态库。当我尝试在我在 iphone 5.0 模拟器上测试运行的 ios 项目中使用它们时,我在我的静态库中收到关于 undefined symbols for architecture i386 的错误消息。

所以我猜这意味着 iphone 模拟器需要为 i386 编译的库?那么模拟器的意义何在 - 为什么它不模拟 armv7 架构呢?

所以我可以测试我的静态库的唯一方法是连接物理 iOS 设备并运行它?

还是我弄错了?

【问题讨论】:

这个问题是android项目使用QEMU这个模拟器的原因。它比iOS模拟器慢得多。 【参考方案1】:

所以我猜这意味着 iphone 模拟器需要编译库 为 i386?那么模拟器的意义何在 - 为什么不呢 也模拟 armv7 架构?

您已经回答了自己的问题。这是一个模拟器,而不是模拟器。因此它是一个 Mac OSX 程序,运行在 i386 架构上。如果您也为 i386 编译静态库,您将能够在模拟器上使用它们。

【讨论】:

【参考方案2】:

我不太确定,但 i386 适用于 Simulatorarmv7 适用于您已连接的 Devices到您的机器。

【讨论】:

【参考方案3】:

您实际上可以使用 i386 架构通过 Xcode 命令行工具编译应用程序(也可以通过修改构建设置在 Xcode UI 中运行它)。

xcodebuild -sdk iphonesimulator6.1 -arch i386 VALID_ARCHS="i386 armv7 armv7s" clean install

在您拥有 projectName.xcodeproj 文件的目录中运行此命令。

下面是脚本的分解:

-sdk iphonesimulator6.1 // Build the app on iPhone simulator 6.1
-arch i386 // Build your app using i386 architecture
VALID_ARCHS="i386 armv7 armv7s" // Specify these architectures are valid
clean install // Clean all the builds then re-build and install

【讨论】:

谢谢,这对我在提交对象以供审核时对 Facebook 的 Open Graph 的新要求很有用【参考方案4】:

如果您想尝试使用 i386 的模拟器,请选择 =

【讨论】:

以上是关于mac上的iOS模拟器运行的是i386架构,不是armv7?的主要内容,如果未能解决你的问题,请参考以下文章

架构 i386 的未定义符号:_FlutterMethodNotImplemented

iOS框架在模拟器上不起作用

“架构 i386 的未定义符号”问题

在MAC上运行Android手机模拟器(emulator)

Mac OS X10.10_xcode6.1_ios8.1环境下,编译lame静态库libmp3lame.a,支持arm64 armv7s x86_64 i386 armv7指令集

体系结构 i386 iOS 的未定义符号