Go 编译代码-分平台编译
要针对 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.go
2. Linux 编译
GOOS=linux GOARCH=amd64 go build -o main_linux main.go
3. 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/bash
echo "Building for MacOS (amd64)..."
GOOS=darwin GOARCH=amd64 go build -o main_mac main.go
echo "Building for MacOS (Apple Silicon)..."
GOOS=darwin GOARCH=arm64 go build -o main_mac_arm main.go
echo "Building for Linux (amd64)..."
GOOS=linux GOARCH=amd64 go build -o main_linux main.go
echo "Building for Windows (amd64)..."
GOOS=windows GOARCH=amd64 go build -o main_windows.exe main.go
echo "Builds completed!"