在 Ubuntu 上使用 Golang 进行交叉编译(为其他平台生成可执行文件)非常简单,核心就是设置两个环境变量:
GOOS:目标操作系统GOARCH:目标架构GOOS=linux GOARCH=arm64 go build -o app-arm64
GOOS=windows GOARCH=amd64 go build -o app.exe
GOOS=darwin GOARCH=amd64 go build -o app-mac
GOOS=darwin GOARCH=arm64 go build -o app-mac-arm
| 平台 | GOOS | GOARCH |
|---|---|---|
| Linux x86_64 | linux | amd64 |
| Linux ARM | linux | arm |
| Linux ARM64 | linux | arm64 |
| Windows 32 | windows | 386 |
| Windows 64 | windows | amd64 |
| macOS Intel | darwin | amd64 |
| macOS M1/M2 | darwin | arm64 |
查看支持列表:
go tool dist list
如果项目使用了 CGO(如 sqlite、某些加密库):
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build
✅ 推荐交叉编译时关闭 CGO
如果必须启用 CGO,需要安装对应平台的 C 交叉编译器,例如:
sudo apt install gcc-aarch64-linux-gnu
然后:
CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc \
GOOS=linux GOARCH=arm64 go build
#!/bin/bash
platforms=(
"linux/amd64"
"linux/arm64"
"windows/amd64"
"darwin/amd64"
"darwin/arm64"
)
for p in "${platforms[@]}"; do
GOOS=${p%/*}
GOARCH=${p#*/}
echo "Building $GOOS/$GOARCH"
GOOS=$GOOS GOARCH=$GOARCH go build -o app-$GOOS-$GOARCH
done
xgo(适合复杂项目)go install github.com/crazy-max/xgo@latest
xgo --targets=linux/amd64,windows/amd64,darwin/arm64 .
✅ Ubuntu 交叉编译 Golang:
GOOS + GOARCHCGO_ENABLED=0如果你有 具体目标平台(如树莓派、龙芯、Windows XP),可以告诉我,我可以给你精确命令。