bash
# 确认已安装 Go 1.16 或更高版本(支持 M1 原生)
go version
# 如果是 Intel 版本的 Go,建议重新安装 M1 原生版本
# 可通过 Homebrew 安装
brew install go
# 或从官网下载 Apple Silicon 版本
# https://go.dev/dl/
bash
# 查看当前系统的 GOOS 和 GOARCH
go env GOOS GOARCH
# M1 Mac 上应该显示:darwin arm64
bash
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o app-linux-amd64 ./cmd/app
bash
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags="-s -w" -o app-linux-arm64 ./cmd/app
bash
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o release/app-linux-amd64 ./cmd/app && GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags="-s -w" -o release/app-linux-arm64 ./cmd/app
GOOS=linux**:指定目标操作系统为 LinuxGOARCH=amd64/arm64**:指定目标架构CGO_ENABLED=0**:禁用 CGO,生成静态链接二进制文件-ldflags="-s -w"**:
-s:移除符号表和调试信息-w:移除 DWARF 调试信息-o**:指定输出文件名bash
# 检查文件类型
file app-linux-amd64
# 应显示:ELF 64-bit LSB executable, x86-64, statically linked, stripped
# 检查文件大小
ls -lh app-linux-amd64 app-linux-arm64
bash
# 添加版本信息编译
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build \
-ldflags="-s -w -X main.Version=1.0.0 -X main.BuildTime=$(date '+%Y%m%d-%H%M%S')" \
-o app-linux-amd64 ./cmd/app
确保 Go 版本 ≥ 1.16(对 M1 有良好支持)
如果代码使用 CGO,需要额外配置交叉编译工具链
生产环境建议使用 UPX 进一步压缩:
bash
upx --best app-linux-amd64
这样就可在 M1 Mac 上快速生成 Linux 可执行文件,适用于容器部署或服务器迁移。