在 Ubuntu 上用 Go(Golang)打包失败,原因通常不止一种。下面我按最常见原因 → 排查方法 → 解决方式给你梳理一下,你可以对照自己的报错来定位。
如果你用了 sqlite、openssl、net 某些功能,Ubuntu 上需要 C 编译器。
报错示例
exec: "gcc": executable file not found
解决
sudo apt update
sudo apt install -y build-essential
禁用 CGO(不推荐长期用):
CGO_ENABLED=0 go build
例如你在 Ubuntu 上打 Windows 包:
GOOS=windows GOARCH=amd64 go build
常见错误
unknown GOOS / GOARCH
检查
go tool dist list
Ubuntu 服务器常无法访问 proxy.golang.org
报错
module lookup disabled
dial tcp: i/o timeout
解决
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=off
permission denied
解决
sudo chown -R $USER:$USER $GOPATH
或不要在 /usr、/opt 下 build
新项目用到 go 1.21+ 特性
go version
升级:
sudo rm -rf /usr/local/go
# 下载新版本后解压
not statically linked
解决
go build -ldflags "-extldflags '-static'"
把完整报错贴出来是最快的:
go build -x 2>&1 | tail -50
或:
go build -v
不同方式失败点也不同:
dpkg-debFROM golangcore22你可以直接告诉我:
我可以一行一行帮你排。