文件是为 arm64 构建的,它不是被链接的架构 (x86_64)

Posted

技术标签:

【中文标题】文件是为 arm64 构建的,它不是被链接的架构 (x86_64)【英文标题】:file was built for arm64 which is not the architecture being linked (x86_64) 【发布时间】:2015-05-08 07:18:01 【问题描述】:

我正在构建一个首先在我的 ios 模拟器中使用的框架。但是,在将其导入主项目时出现此错误:

文件是为 arm64 构建的,它不是被链接的架构 (x86_64)

这是我的框架的构建信息:

更新:

我使用这种技术创建了一个通用框架:https://medium.com/@syshen/create-an-ios-universal-framework-148eb130a46c,但我仍然收到错误

更新:在二进制文件上运行文件的结果:

hunterp$ file dinkle 
dinkle: Mach-O universal binary with 2 architectures
dinkle (for architecture x86_64):   Mach-O 64-bit dynamically linked shared library x86_64
dinkle (for architecture arm64):    Mach-O 64-bit dynamically linked shared library

【问题讨论】:

在构建框架时,您是否选择了“Build Active Architecture Only = NO”?大多数人都忘记了这一点。 @Raptor 看看图片....回答你的问题不是吗? 哎呀,我的错,我忽略了它。 你能显示在二进制文件上运行file 的输出吗? 好的,您能否再次检查所有配置的“仅构建活动架构”是否设置为否?例如。从侧面的三角形展开菜单。 【参考方案1】:

创建框架并将 .h 文件转换为 .a fat 文件。使用模拟器目标和设备目标编译您的项目,完成这两个任务后您必须加入以使用 shell 制作通用文件。

【讨论】:

【参考方案2】:

我错误地复制了二进制框架,并使用了在我将其更改为通用框架之前的旧框架。

【讨论】:

您与 LIPO 合作过吗?如果你想让你的框架与模拟器和真实设备一起工作,你就必须这样做。 :) 其实我想知道你是如何创建一个通用框架的。因为我尝试使用 lipo -create 创建一个但没有成功。我遵循了许多教程但没有成功。提前致谢

以上是关于文件是为 arm64 构建的,它不是被链接的架构 (x86_64)的主要内容,如果未能解决你的问题,请参考以下文章

为 iOS 模拟器构建,但在为 iOS 构建的目标文件中链接,用于架构 arm64

为 iOS 构建,但在为 iOS 模拟器构建的目标文件中链接,用于架构 arm64

我可以构建 Armv7 + Arm64 架构,但不能单独构建 Armv7

x86的库和arm的.o文件能链接吗

如何更新您的静态库架构以支持 arm64 构建?

仅构建活动架构时 Cordova 链接器错误“没有为归档构建文件,该文件不是被链接的架构 (i386)”