在 Ubuntu 上编译 Go(无论是编译 Go 语言写的程序,还是从源码编译 Go 工具链本身)失败,常见原因主要集中在以下几类。你可以对照看看属于哪一种。
go version
command not found:没装或未加入 PATH解决
sudo apt remove golang-go
wget https://go.dev/dl/go1.22.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
GOPATHgo mod常见错误:
cannot find package
go: go.mod file not found
解决
go env -w GO111MODULE=on
go mod init project
go mod tidy
例如:
exec: "gcc": executable file not found
或
C source files not allowed when not using cgo
解决
sudo apt install gcc
交叉编译时:
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build
$GOPATH/pkg/usr/localsudo chown -R $USER:$USER ~/go
sudo apt update
sudo apt install -y git gcc make bison
Go 源码编译需要 已有 Go 环境(bootstrap)
错误示例:
GO_BOOTSTRAP not set
解决:
export GOROOT_BOOTSTRAP=/usr/local/go
| 错误信息 | 原因 | 解决 |
|---|---|---|
gcc: command not found |
没装 gcc | apt install gcc |
permission denied |
权限不足 | sudo / chown |
unknown revision |
网络 / 代理问题 | GOPROXY=https://proxy.golang.org |
too old |
Go 版本太低 | 升级 Go |
cgo disabled |
用了 C 库但禁了 cgo | CGO_ENABLED=1 |
如果还解决不了,可以发:
go versionlsb_release -a)go build 还是编译 Go 源码我可以直接帮你定位。