在M系列Mac上生成x86_64程序需显式切换至x86_64环境:一、用arch -x86_64临时切换Shell;二、创建并配置Rosetta终端;三、安装x86_64专属Homebrew;四、Xcode中设置架构为x86_64并启用Rosetta;五、Cargo配置交叉编译目标。

如果您在搭载M系列芯片的Mac上需要生成x86_64架构的可执行程序,但当前系统默认仅支持arm64原生编译,则必须显式切换至x86_64执行环境并配置对应工具链。以下是多种可行的编译方案:
一、使用arch -x86_64临时切换Shell环境
该方法通过指令级架构切换,使后续所有命令(包括编译器调用)均在Rosetta 2转译的x86_64上下文中运行,适用于一次性编译任务,无需永久修改环境。
1、打开终端应用。
2、输入命令:arch -x86_64 zsh,按回车进入x86_64模式Shell。
3、验证当前架构:uname -m,输出应为x86_64。
4、在此Shell中调用gcc、clang或make等工具进行编译,生成的二进制文件即为x86_64架构。
二、创建专用Rosetta终端并持久化配置
为避免每次手动切换,可复制终端应用并绑定Rosetta运行模式,形成独立、稳定的x86_64开发入口,确保PATH、环境变量及工具链路径持续生效。
1、在“访达”中进入“应用程序 → 实用工具”,找到“终端.app”。
2、右键点击“终端.app”,选择“复制”。
3、将副本重命名为“Rosetta 终端.app”。
4、右键新终端图标,选择“显示简介”,勾选使用 Rosetta 打开。
5、双击启动“Rosetta 终端.app”,执行uname -m确认输出为x86_64。
6、在此终端中安装x86_64版Homebrew或直接调用x86_64交叉工具链进行编译。
三、配置x86_64专属Homebrew管理工具链
该方案建立完全隔离的x86_64软件生态,避免与系统原生arm64 Homebrew冲突,适合长期维护多架构项目依赖。
1、确保已安装Rosetta 2:softwareupdate --install-rosetta。
2、在Rosetta终端中执行:arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"。
3、安装完成后,x86_64 Homebrew将位于/usr/local/bin/brew而非默认的/opt/homebrew。
4、通过/usr/local/bin/brew install gcc@13安装x86_64版GCC,并使用/usr/local/bin/gcc-13进行编译。
四、使用Xcode配合Rosetta构建x86_64目标
对于Xcode项目,可通过设置构建架构与运行环境,强制在M芯片上生成并调试x86_64二进制,适用于C/C++/Objective-C工程。
1、在Xcode中打开项目,点击项目名称进入“Project Settings”。
2、选择目标(Target),切换到“Build Settings”标签页。
3、搜索“Architectures”,将值设为x86_64;同时将“Valid Architectures”设为x86_64。
4、点击菜单栏“Product → Destination”,确认选中“Rosetta”运行环境(若未显示,请先在Xcode应用上右键→“显示简介”→勾选“使用 Rosetta 打开”)。
5、执行Build(Cmd+B),生成产物即为x86_64架构。
五、Cargo交叉编译x86_64 Linux或Windows目标
针对Rust项目,需配置交叉编译目标及对应链接器路径,使arm64主机可产出x86_64可执行文件,适用于嵌入式或服务端跨平台部署场景。
1、编辑或新建${HOME}/.cargo/config文件。
2、添加以下内容(以x86_64-unknown-linux-gnu为例):
[target.x86_64-unknown-linux-gnu]
ar = "/usr/local/bin/x86_64-linux-gnu-ar"
linker = "/usr/local/bin/x86_64-linux-gnu-gcc"
3、确保已安装x86_64 Linux交叉工具链(如通过x86_64 Homebrew安装x86_64-linux-gnu-binutils)。
4、在项目目录中执行:cargo build --target x86_64-unknown-linux-gnu。

















