Ubuntu 下 Golang 打包失败的原因有很多,下面按常见原因 → 排查方法 → 解决方式给你系统梳理一下。
错误示例
go: github.com/xxx: Get "https://proxy.golang.org/...": dial tcp: i/o timeout
原因
proxy.golang.org解决
go env -w GOPROXY=https://goproxy.cn,direct
或
go env -w GOPROXY=https://proxy.golang.org,direct
测试:
go mod download
错误示例
go: cannot find main module
解决
go mod init projectname
go mod tidy
错误示例
gcc: command not found
# runtime/cgo
原因
sqlite、opencv、leveldb 等 C 依赖解决
sudo apt update
sudo apt install -y gcc
或关闭 CGO(不推荐长期使用):
CGO_ENABLED=0 go build
错误示例
exec: "aarch64-linux-gnu-gcc": executable file not found
原因
GOOS=linux GOARCH=arm64 go build
但系统缺少交叉编译工具
解决
sudo apt install -y gcc-aarch64-linux-gnu
错误示例
go: module requires go >= 1.20
解决
go version
升级 Go(Ubuntu 自带版本通常很旧):
sudo rm -rf /usr/local/go
wget https://go.dev/dl/go1.22.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.linux-amd64.tar.gz
错误示例
permission denied
解决
sudo chown -R $USER:$USER ~/go
go version
go env
go mod tidy
go build -v
如果还失败,把完整报错贴出来我可以精准定位。
为了更快帮你:
go version)我可以直接告诉你是哪一行导致的失败。