温馨提示×

ubuntu golang编译为何报错

小樊
40
2026-10-10 06:27:57
栏目: 编程语言

在 Ubuntu 上用 Go 编译报错,原因非常多,常见的大致可以归为下面几类。你可以对照看看是哪一种,或者把完整的报错信息贴出来,我可以更精准地帮你定位。


一、Go 环境没装好 / 版本问题

1. Go 未安装或不在 PATH

go version

如果提示:

command not found: go

说明没装或没配置环境变量。

解决:

sudo apt install 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

二、GOPATH / GOMOD 相关错误

2. 没有 go.mod

报错类似:

go: cannot find main module

或

no required module provides package

解决:

go mod init your_module_name
go mod tidy

3. 在 GOPATH 外但没用 module

老项目容易出这个问题。

建议:

  • 新项目一定用 go mod
  • 不要在 $GOPATH/src 外面乱跑

三、Linux 系统相关报错

4. 缺少 C 依赖(cgo)

报错:

cannot find -lxxx

或

CGO_ENABLED=1

常见于:

  • 使用 sqlite
  • 使用 openssl
  • 使用某些 C 库

解决:

sudo apt install gcc libc-dev

或临时关 cgo:

CGO_ENABLED=0 go build

5. 权限问题

报错:

permission denied

解决:

sudo chmod +x your_binary
# 或不要写到 /usr/bin 之类

四、架构 / 交叉编译问题

6. 架构不匹配

比如:

  • 在 ARM 上编译 amd64
  • WSL 环境异常

查看:

uname -m
go env GOARCH

五、最常见“新手”错误总结

现象 原因
package main is not in GOROOT 目录不对 / 没 go.mod
undefined: main 没写 func main()
command-line-arguments 直接用 go build file.go 但有多文件
exec: gcc: not found 没装 gcc

建议你这样贴信息,我能直接帮你修

请贴:

  1. Ubuntu 版本
  2. Go 版本(go version)
  3. 完整报错(别只截一半)
  4. 编译命令(如 go build / go run main.go)

例如:

Ubuntu 22.04
go 1.21
报错:
go: cannot find main module

我可以直接告诉你改哪一行。

0 踩