温馨提示×

ubuntu编译golang为何失败

小樊
35
2026-10-01 10:53:15
栏目: 编程语言

在 Ubuntu 上编译 Go(无论是编译 Go 语言写的程序,还是从源码编译 Go 工具链本身)失败,常见原因主要集中在以下几类。你可以对照看看属于哪一种。


一、编译 Go 程序失败(go build 报错)

1. Go 未正确安装或版本过低

go version
  • 如果提示 command not found:没装或未加入 PATH
  • 如果版本太老(如 1.10),而代码用了新特性(泛型、embed 等)

解决

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

2. GOPATH / GOMOD 环境问题

  • 老项目用 GOPATH
  • 新项目用 go mod

常见错误:

cannot find package
go: go.mod file not found

解决

go env -w GO111MODULE=on
go mod init project
go mod tidy

3. 架构 / 交叉编译错误

例如:

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

4. 权限问题

  • 写 $GOPATH/pkg
  • 写 /usr/local
sudo chown -R $USER:$USER ~/go

二、从源码编译 Go 工具链失败

1. 缺少依赖

sudo apt update
sudo apt install -y git gcc make bison

2. 用了不兼容的 Go 引导版本

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

四、建议你补充的信息

如果还解决不了,可以发:

  1. 完整报错信息
  2. go version
  3. Ubuntu 版本(lsb_release -a)
  4. 是 go build 还是编译 Go 源码

我可以直接帮你定位。

0 踩