在 Ubuntu 上用 Golang 打包(编译)出错,原因有很多种。下面按常见错误类型 + 解决办法给你梳理一下,基本能覆盖 90% 的情况。
先确认:
go version
echo $GOPATH
echo $GO111MODULE
推荐现代做法(Go 1.16+):
go mod init project
go build
command not found: go原因:Go 没装或没加到 PATH
解决:
sudo apt install golang-go
# 或官方版本
然后:
export PATH=$PATH:/usr/local/go/bin
cannot find package原因:
解决:
go mod tidy
go build
missing go.sum entrymissing go.sum entry for module
解决:
go mod download
go mod tidy
典型报错:
gcc: not found
C compiler cannot create executables
原因:用了 CGO(如 sqlite、crypto)
解决(Ubuntu):
sudo apt update
sudo apt install gcc
如果不需要 CGO:
CGO_ENABLED=0 go build
✅ 正确方式:
# Linux
GOOS=linux GOARCH=amd64 go build
# Windows
GOOS=windows GOARCH=amd64 go build
# ARM
GOOS=linux GOARCH=arm64 go build
⚠️ 如果用了 CGO,交叉编译会非常麻烦,建议:
CGO_ENABLED=0 go build
permission deniedgo build
-bash: ./app: Permission denied
解决:
chmod +x app
或输出到指定目录:
go build -o /tmp/app
如果是运行后才报错:
这属于运行问题,不是 build 问题。
CGO_ENABLED=0 GOOS=linux go build -o app main.go
请把完整报错信息贴出来,或者告诉我:
go version)我可以一步到位告诉你怎么修 ✅