M1 Mac Xcode13.3链接Intel静态库生成x86_64二进制配置方法
Xcode 13.3 仅编译x86_64架构Mac应用操作步骤
按以下配置修改后,即可正常链接仅支持Intel x64架构的第三方C静态库,输出的产物可直接在M1系列芯片Mac上通过Rosetta 2转译运行,无需编译arm64架构或通用二进制。
核心架构配置修改
- 打开Xcode项目,选中对应应用Target,切换到Build Settings标签页
- 找到
Architectures配置组:- 将
Build Active Architecture Only选项在Debug、Release模式下均设置为No - 清空
Architectures项的默认值,手动添加x86_64作为唯一目标架构 - 在
Excluded Architectures项中,为所有编译场景下的Any Mac SDK添加值arm64,彻底屏蔽arm64架构的构建流程
- 将
- 搜索找到
Valid Architectures配置项,清空原有内容,仅保留x86_64
编译链接参数校验
- 定位到
Other C Flags、Other C++ Flags、Other Linker Flags三个配置项,在三个参数中均显式添加-arch x86_64,避免C++/Objective-C++混编时部分编译单元未携带正确架构参数 - 确认静态库的搜索路径配置正确,没有指向其他架构版本的同名库文件
编译前缓存清理
- 按下
Shift + Command + K清空项目已有构建产物 - 进入Xcode的Derived Data目录,删除当前项目对应的缓存文件夹,避免旧的arm64架构编译缓存干扰构建
- 重新执行构建即可,原提示
The linked library 'libkfunc64.a' is missing one or more architectures required by this target: arm64的报错会直接消失
注意:无需设置「使用Rosetta打开Xcode」,该选项仅改变Xcode本身的运行架构,不会修改项目的目标编译架构,反而可能引发插件兼容类问题。
内容的提问来源于stack exchange,提问作者JazzSoft
相关产品推荐
相关产品推荐

