要针对 Mac, Linux, 和 Windows 编译单个 main.go 文件,可以使用 Go 的交叉编译功能,通过设置环境变量 GOOS 和 GOARCH 来指定目标操作系统和架构。
编译命令
在项目目录下执行以下命令:
1. MacOS 编译
GOOS=darwin GOARCH=amd64 go build -o main_mac main.go或对于 Apple Silicon 芯片 (M1/M2):
GOOS=darwin GOARCH=arm64 go build -o main_mac_arm main.go2. Linux 编译
GOOS=linux GOARCH=amd64 go build -o main_linux main.go3. Windows 编译
GOOS=windows GOARCH=amd64 go build -o main_windows.exe main.go说明
- 输出文件名称:
-  - -o参数指定输出文件的名称。例如- main_mac表示 MacOS 平台的二进制文件。
- Windows 文件通常使用 .exe扩展名。
 
- 架构支持:
-  - GOARCH=amd64表示 64 位架构。如果需要支持 32 位架构,可以改为- GOARCH=386。
 
- 交叉编译环境:
-  - Go 自带交叉编译支持,运行这些命令不需要安装额外工具。
 
- 验证编译环境:
-  - 如果需要查看当前支持的所有目标操作系统和架构组合,可以运行:
 
go tool dist list示例:批量编译脚本
一个简单的 shell 脚本 build_all.sh,一键生成所有目标文件:
#!/bin/bashecho "Building for MacOS (amd64)..."
GOOS=darwin GOARCH=amd64 go build -o main_mac main.goecho "Building for MacOS (Apple Silicon)..."
GOOS=darwin GOARCH=arm64 go build -o main_mac_arm main.goecho "Building for Linux (amd64)..."
GOOS=linux GOARCH=amd64 go build -o main_linux main.goecho "Building for Windows (amd64)..."
GOOS=windows GOARCH=amd64 go build -o main_windows.exe main.goecho "Builds completed!"