如何在Windows系统上编译适用于MacOS的Go程序?
Windows 环境下交叉编译 Go 程序到 macOS 平台实操步骤
前置准备
- 确保 Windows 设备已安装 1.16 及以上版本的 Go 环境,可通过执行
go version验证安装结果 - 若编译的程序涉及 CGO 调用,需要提前安装对应 macOS 架构的交叉编译工具链,纯 Go 代码编译不需要额外依赖
编译纯 Go 代码(无 CGO 依赖,最常用场景)
直接设置环境变量后执行编译命令即可,分 Intel x86_64 架构和 Apple Silicon arm64 架构两种场景:
编译为 macOS Intel 架构(x86_64)适用的可执行文件
PowerShell 执行命令:
$env:CGO_ENABLED=0 $env:GOOS=darwin $env:GOARCH=amd64 go build -o your-program-amd64 .
CMD 执行命令:
set CGO_ENABLED=0 set GOOS=darwin set GOARCH=amd64 go build -o your-program-amd64 .
编译为 macOS Apple Silicon 架构(arm64)适用的可执行文件
PowerShell 执行命令:
$env:CGO_ENABLED=0 $env:GOOS=darwin $env:GOARCH=arm64 go build -o your-program-arm64 .
CMD 执行命令:
set CGO_ENABLED=0 set GOOS=darwin set GOARCH=arm64 go build -o your-program-arm64 .
编译通用二进制文件(同时支持两种架构)
可以分别编译两个架构的二进制文件后,在 macOS 设备上用 lipo 命令合并为通用二进制,Windows 环境下无原生工具支持直接生成通用二进制。
带 CGO 依赖的编译场景
如果代码用到了 CGO,需要提前安装对应目标架构的 macOS 交叉编译工具链,完成工具链配置后执行以下命令(以 amd64 架构为例):
$env:CGO_ENABLED=1 $env:GOOS=darwin $env:GOARCH=amd64 $env:CC="x86_64-apple-darwin20.4-clang" go build -o your-program-amd64 .
注意:CC 变量的值需要替换为你实际安装的交叉编译 clang 路径
编译后验证
将生成的二进制文件传到 macOS 设备后,执行以下命令添加可执行权限即可运行:
chmod +x your-program-amd64 ./your-program-amd64
如果运行时出现「无法验证开发者」的提示,可在 macOS 的「系统设置-隐私与安全性」中选择允许该程序运行,或者执行
xattr -d com.apple.quarantine your-program-amd64命令清除隔离属性。
内容的提问来源于stack exchange,提问作者zen
相关产品推荐
相关产品推荐

