在 Debian 上编译 Go 程序或编译 Go 本身时常见的报错有很多,下面按最常见场景给你一个排查和解决指南。你可以对照自己的情况看。
gcc: command not found / C compiler not found原因:使用了 cgo,但没装 gcc
解决
sudo apt update
sudo apt install -y gcc
如果是 64 位编译 32 位:
sudo apt install gcc-multilib
go: command not found原因:Go 没安装或不在 PATH
解决
sudo apt install golang-go
# 或安装新版官方 Go
验证:
go version
cannot find package "xxx"原因:依赖没下载
解决
go mod tidy
go build
如果是私有仓库:
export GOPRIVATE=git.example.com
version 'go1.xx' unsupported原因:Debian 自带 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
permission denied原因:在系统目录编译
解决
mkdir ~/go-work
cd ~/go-work
go build
ERROR: Cannot find /home/xxx/go1.4原因:新版 Go 需要 bootstrap 编译器
解决
sudo apt install golang-go
cd ~/go/src
./make.bash
或使用官方二进制作为 bootstrap:
export GOROOT_BOOTSTRAP=/usr/local/go
解决
export GOMAXPROCS=2
./make.bash
或加 swap:
sudo fallocate -l 2G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
go version
gcc --version
echo $GOPATH
echo $GOROOT
go env
把完整报错信息贴出来,并说明:
cat /etc/os-release)go build 还是编译 Go 源码例如:
Debian 12,go1.19,go build 报错:gcc not found
我可以直接给你对应的一条命令解决。