在 Debian 上编译 Go(无论是编译 Go 程序还是从源码编译 Go 工具链本身)报错的“原因”非常多,下面按常见场景帮你快速定位。你可以对照看看是哪一种。
报错示例
gcc: command not found
cc: command not found
原因
Debian 默认是“最小系统”,没有安装 C 编译器和构建工具。
解决
sudo apt update
sudo apt install -y build-essential
如果你用到 cgo,还需要:
sudo apt install -y gcc
报错示例
unsupported GOOS/GOARCH
go: cannot find main module
原因
解决
✅ 不要用 apt 的 go(很旧)
✅ 用官方二进制:
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
然后:
export PATH=$PATH:/usr/local/go/bin
报错示例
go: go.mod file not found in current directory
原因
go build解决
go mod init yourmodule
go build
或确认你在项目根目录。
报错示例
# runtime/cgo
gcc: error: unrecognized command line option
原因
解决
sudo apt install -y gcc libc6-dev
如果是特定库:
sudo apt install -y libsqlite3-dev
报错示例
exec format error
原因
解决 确认架构:
uname -m
下载对应版本:
arm64amd64报错示例
ERROR: Cannot find /usr/include/...
原因 没装依赖
解决
sudo apt install -y \
git gcc make bc \
libssl-dev
然后:
cd go/src
./make.bash
你可以先跑这些命令,把输出贴给我:
go version
uname -a
gcc --version
go env
请把完整报错信息贴出来,包括:
cat /etc/os-release)go build 还是编译 Go 本身我可以直接告诉你是哪一行、为什么、怎么改。