在 Ubuntu 上调试 Golang 编译问题,可以按下面这套思路来,从“能不能编”到“为什么编不过”。
go version
正常应类似:
go version go1.22.3 linux/amd64
如果提示 command not found:
which go
ls /usr/local/go/bin
推荐安装方式(Ubuntu):
sudo rm -rf /usr/local/go
wget https://go.dev/dl/go1.22.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz
并确认 PATH:
export PATH=$PATH:/usr/local/go/bin
go env
重点关注:
GOROOT:Go 安装目录GOPATH:工作目录GO111MODULECGO_ENABLED示例:
GOROOT="/usr/local/go"
GOPATH="/home/user/go"
GO111MODULE="on"
cannot find packagecannot find package "github.com/xxx/yyy"
✅ 解决:
go mod tidy
go get github.com/xxx/yyy
确认:
go list -m all
undefined: xxx一般是:
检查:
go build -x
错误示例:
cgo: C compiler "gcc" not found
✅ 安装依赖:
sudo apt update
sudo apt install -y gcc libc-dev
关闭 CGO(如不需要):
CGO_ENABLED=0 go build
permission denied
解决:
sudo chown -R $USER:$USER ~/go
go build -x
go mod graph
go run main.go
go build -o app main.go
如果你是想 调试运行中的 Go 程序:
go install github.com/go-delve/delve/cmd/dlv@latest
dlv debug ./main.go
常用命令:
break main.main
continue
next
print x
建议:
apt install golang 和官方 tar容器或 WSL 中:
go build
# 报错 exec format error
解决:
GOOS=linux GOARCH=amd64 go build
go version
go env
go mod tidy
go build -x
如果你愿意,可以把 具体的报错信息贴出来(终端完整输出),我可以直接帮你定位是哪一类问题。