在 Ubuntu 上进行 Golang 跨平台开发
一 环境准备与统一配置
go version、go env 验证环境可用。go install 安装的工具。二 交叉编译核心步骤
go build 即可生成对应平台的可执行文件。例如:
GOOS=windows GOARCH=amd64 go build -o myapp.exe main.goGOOS=linux GOARCH=arm go build -o myapp-linux-arm main.goGOOS=darwin GOARCH=arm64 go build -o myapp-mac main.gogo tool dist list 获取所有可用的 GOOS/GOARCH 组合。unset GOOS GOARCH 恢复默认值。三 多平台构建与自动化
#!/usr/bin/env bash
set -e
OUT_DIR=dist
mkdir -p $OUT_DIR
# 静态编译 Linux x86_64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $OUT_DIR/app-linux main.go
# Windows 64 位
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o $OUT_DIR/app.exe main.go
# macOS Apple Silicon
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o $OUT_DIR/app-mac main.go
magefile.go,团队成员无需额外安装 bash/PowerShell 即可运行 mage build、mage test。四 兼容性与代码实践
//go:build、文件后缀 _darwin.go/_windows.go)隔离平台差异。.env.local 并加入 .gitignore。-ldflags "-X 'main.BuildOS=$GOOS'" 注入构建元信息,便于排查“构建于何处、运行于何处”的问题。五 常见问题与排查
.exe,在 Linux/macOS 上无后缀;按目标平台与架构规范命名产物,便于分发与识别。