在 Ubuntu 上编译 Go 程序“很慢”,通常不是 Go 本身的问题,而是环境或配置导致的。下面按最常见原因 → 排查方法 → 解决建议给你梳理一下。
Ubuntu 上如果是 企业环境,很可能装了:
现象
go build 时 CPU 不高✅ 解决:
# 临时关闭 ClamAV
sudo systemctl stop clamav-freshclam
sudo systemctl stop clamav-daemon
或者把 Go 工作目录加入白名单。
/mnt/c(WSL)Go 编译会大量读写:
$GOPATH/pkg✅ 解决:
~/project),别用 /mnt默认:
GOPROXY=https://proxy.golang.org
✅ 解决(国内推荐):
go env -w GOPROXY=https://goproxy.cn,direct
测试:
go env GOPROXY
Go 本身很快,是因为有缓存。
检查:
go env GOCACHE
如果:
就会非常慢。
✅ 解决:
go env -w GOCACHE=$HOME/.cache/go-build
只要用了:
netsqlite就可能触发 CGO。
检查:
go env CGO_ENABLED
如果是 1,且你不需要 C:
CGO_ENABLED=0 go build
查看:
nproc
free -h
top
go env GOPROXY GOCACHE CGO_ENABLED
nproc
df -h .
| 项目规模 | 正常编译时间 |
|---|---|
| 小项目 | < 2s |
| 中型 | 5–15s |
| 大型 | 30–60s |
如果明显超出,基本是环境问题。
你可以直接贴:
go version)go build -x 卡在哪一步我可以帮你精确定位是哪一块拖慢的。