在 Debian 上进行 Golang 跨平台开发
一 环境准备与统一配置
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
echo 'export GOROOT=/usr/local/go' | sudo tee -a /etc/profile
echo 'export GOPATH=$HOME/go' | sudo tee -a /etc/profile
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' | sudo tee -a /etc/profile
source /etc/profile
go version
sudo apt update && sudo apt install golang-go
go version
二 跨平台构建与运行
# Linux AMD64
GOOS=linux GOARCH=amd64 go build -o bin/app-linux-amd64 main.go
# Windows AMD64
GOOS=windows GOARCH=amd64 go build -o bin/app-windows-amd64.exe main.go
# macOS ARM64(Apple Silicon)
GOOS=darwin GOARCH=arm64 go build -o bin/app-darwin-arm64 main.go
# macOS AMD64(Intel)
GOOS=darwin GOARCH=amd64 go build -o bin/app-darwin-amd64 main.go
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o server main.go
三 依赖管理与协作规范
四 自动化与多平台交付
BIN=bin/app
GOOS_LINUX=linux
GOARCH_AMD64=amd64
GOARCH_ARM64=arm64
.PHONY: build-all
build-all:
GOOS=$(GOOS_LINUX) GOARCH=$(GOARCH_AMD64) go build -o $(BIN)-linux-amd64 main.go
GOOS=$(GOOS_LINUX) GOARCH=$(GOARCH_ARM64) go build -o $(BIN)-linux-arm64 main.go
GOOS=windows GOARCH=$(GOARCH_AMD64) go build -o $(BIN)-windows-amd64.exe main.go
GOOS=darwin GOARCH=arm64 go build -o $(BIN)-darwin-arm64 main.go
GOOS=darwin GOARCH=amd64 go build -o $(BIN)-darwin-amd64 main.go
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 \
-t yourorg/app:latest --push .