You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode13.1编译iOS真机项目链接mylib.a报arm64架构错误如何解决?

问题根因

building for iOS, but linking in object file built for iOS Simulator, for architecture arm64

从Xcode 12版本开始,苹果为M1芯片适配iOS模拟器运行能力,新增了模拟器arm64架构切片,和真机arm64架构切片是两种完全独立的二进制类型。你用Xcode 13编译的mylib.a静态库如果是合并了真机+模拟器的通用fat包,包内会同时存在两种arm64切片,Xcode链接时选择真机运行场景未正确过滤模拟器arm64切片,就会触发该报错。而Xcode 11版本不支持模拟器arm64,编译出的静态库arm64切片仅对应真机架构,因此可以正常运行。

解决方案

方案1:重新编译mylib.a静态库(推荐)

修改静态库的编译脚本,编译后将静态库的不同架构切片按场景拆分,或者用XCFramework格式打包:

  • 编译时分别生成仅真机的静态包(包含armv7、arm64切片)和仅模拟器的静态包(包含x86_64、arm64切片),项目引入时根据编译场景选择对应包
  • 也可以执行xcodebuild -create-xcframework命令将两个场景的静态库打包成XCFramework格式,直接引入项目即可自动适配不同运行场景,命令示例:
xcodebuild -create-xcframework \
  -library 真机编译路径/mylib.a \
  -library 模拟器编译路径/mylib.a \
  -output mylib.xcframework

方案2:直接修改App项目配置(临时适配,不需要重新编译静态库)

在Xcode项目的Build Settings中做如下修改:

  • 找到Excluded Architectures配置项,在Any iOS Simulator SDK选项中添加arm64,表示编译模拟器版本时排除arm64架构,只使用x86_64架构运行(M1设备会通过Rosetta转译运行,不影响功能)
  • 找到Build Active Architecture Only配置项,Debug模式改为YES,Release模式改为NO
  • 清空项目缓存(快捷键Command+Shift+K)后重新编译即可

内容的提问来源于stack exchange,提问作者JeremyRoche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:54:01