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 适用于 Simulator 而 armv7 适用于您已连接的 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
Mac OS X10.10_xcode6.1_ios8.1环境下,编译lame静态库libmp3lame.a,支持arm64 armv7s x86_64 i386 armv7指令集