Debian 上 Go 跨平台开发实战指南
一 环境准备与版本统一
gvm install go1.21.5 && gvm use go1.21.5 --default。go install 安装的工具在 PATH 中可用。.vscode/settings.json;统一代码格式(如 gofumpt 或 goimports)与 golangci-lint 配置,减少“在我机器上能跑”的差异。二 纯 Go 项目的交叉编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/app_linux_amd64 .CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o bin/app_windows_amd64.exe .CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o bin/app_darwin_amd64 .CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o bin/app_darwin_arm64 .go tool dist list 查看所有 GOOS/GOARCH 组合。三 含 CGO 依赖的跨平台构建
mkdir -p dist/linux-amd64
CGO_ENABLED=1 \
GOOS=linux \
GOARCH=amd64 \
CC="zig cc -target x86_64-linux-gnu -isystem /usr/include -L/usr/lib/x86_64-linux-gnu" \
go build -o dist/linux-amd64/app .
-target 即可,无需为每个平台单独维护 gcc/clang 工具链。四 工程化与自动化
replace;用 go mod tidy 保持一致性。build/test/fmt/docker-build),统一团队与 CI 的构建入口。FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o /app/app .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/app .
CMD ["./app"]
五 代码与平台适配要点
//go:build windows 或 // +build linux)隔离平台特定实现,保持主逻辑清晰。