温馨提示×

怎样debug ubuntu golang编译

小樊
38
2026-10-24 23:11:22
栏目: 编程语言

在 Ubuntu 上调试 Golang 编译问题,可以按下面这套思路来,从“能不能编”到“为什么编不过”。


一、确认基础环境

1. 检查 Go 是否安装正确

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

2. 检查环境变量

go env

重点关注:

  • GOROOT:Go 安装目录
  • GOPATH:工作目录
  • GO111MODULE
  • CGO_ENABLED

示例:

GOROOT="/usr/local/go"
GOPATH="/home/user/go"
GO111MODULE="on"

二、最常见的编译错误 & 排查

1. cannot find package

cannot find package "github.com/xxx/yyy"

✅ 解决:

go mod tidy
go get github.com/xxx/yyy

确认:

go list -m all

2. undefined: xxx

一般是:

  • 函数名拼错
  • 文件没加入编译(build tag)
  • 包没导入

检查:

go build -x

3. CGO 编译失败(非常常见)

错误示例:

cgo: C compiler "gcc" not found

✅ 安装依赖:

sudo apt update
sudo apt install -y gcc libc-dev

关闭 CGO(如不需要):

CGO_ENABLED=0 go build

4. 权限问题

permission denied

解决:

sudo chown -R $USER:$USER ~/go

三、使用调试参数

1. 显示详细编译过程

go build -x

2. 查看依赖关系

go mod graph

3. 编译单个文件

go run main.go
go build -o app main.go

四、用 Delve 调试运行(不是编译)

如果你是想 调试运行中的 Go 程序:

安装 Delve

go install github.com/go-delve/delve/cmd/dlv@latest

启动调试

dlv debug ./main.go

常用命令:

break main.main
continue
next
print x

五、Ubuntu 特有问题

1. 旧版本 Ubuntu + 新 Go

建议:

  • Ubuntu 20.04+ 用 Go 1.20+
  • 不要混用 apt install golang 和官方 tar

2. 内核 / seccomp 限制

容器或 WSL 中:

go build
# 报错 exec format error

解决:

GOOS=linux GOARCH=amd64 go build

六、最小排错模板(建议保存)

go version
go env
go mod tidy
go build -x

如果你愿意,可以把 具体的报错信息贴出来(终端完整输出),我可以直接帮你定位是哪一类问题。

0 踩