在 Ubuntu 上加速 Golang 编译,可以从系统环境、Go 本身配置、代码与依赖、硬件/工具几个方面入手。下面按“最有用 → 进阶”的顺序说明。
Go 1.10+ 默认有 build cache:
go env GOCACHE
一般路径是:
~/.cache/go-build
✅ 不要清理这个目录,它能大幅减少重复编译时间。
-p 提高并行编译数Go 默认会用 CPU 核数,但你可以显式指定:
go build -p 8 ./...
或设置环境变量:
export GOMAXPROCS=8
go build 频繁下载依赖使用 module 缓存:
go env GOMODCACHE
离线开发时可以:
go mod download
然后再编译,避免网络拉取。
Go 编译是 I/O 密集型:
✅ 把项目放在 SSD 上,不要在 NFS / 机械盘。
Ubuntu 上这些会拖慢编译:
clamavbalootracker查看:
systemctl status clamav-freshclam
把 build 目录放内存:
mkdir -p /tmp/gobuild
export GOCACHE=/tmp/gobuild
export TMPDIR=/tmp/gobuild
⚠️ 内存够大再这么干(≥16G 推荐)
go mod tidy 清理go mod tidy
go test ./...测试比编译慢很多,可以:
go test -run xxx ./pkg
或只编译不测试:
go build ./...
go build -o /dev/null如果只是验证能否编译:
go build -o /dev/null ./...
比写磁盘快。
golangci-lint 缓存如果你用 lint:
golangci-lint run --fast
或开启缓存。
bazel / mage(大型项目)大型 monorepo:
Go 每个版本编译都更快:
查看:
go version
# ~/.bashrc
export GOMAXPROCS=8
export GOCACHE=$HOME/.cache/go-build
export GOFLAGS=-mod=readonly
项目在 SSD,依赖提前下载,编译并行开满。
你可以告诉我:
我可以直接给你针对性加速方案。