在 Ubuntu 上用 Go 编译报错,原因非常多,常见的大致可以归为下面几类。你可以对照看看是哪一种,或者把完整的报错信息贴出来,我可以更精准地帮你定位。
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
报错类似:
go: cannot find main module
或
no required module provides package
解决:
go mod init your_module_name
go mod tidy
老项目容易出这个问题。
建议:
go mod$GOPATH/src 外面乱跑报错:
cannot find -lxxx
或
CGO_ENABLED=1
常见于:
sqliteopenssl解决:
sudo apt install gcc libc-dev
或临时关 cgo:
CGO_ENABLED=0 go build
报错:
permission denied
解决:
sudo chmod +x your_binary
# 或不要写到 /usr/bin 之类
比如:
查看:
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 |
请贴:
go version)go build / go run main.go)例如:
Ubuntu 22.04
go 1.21
报错:
go: cannot find main module
我可以直接告诉你改哪一行。