整体来说,Ubuntu 上用 Golang 打包并不复杂,尤其是对比 Java / C++ 这类项目。下面分几种常见情况说明:
如果你的项目不依赖 CGO、不调用 C 库:
# 安装 Go
sudo apt update
sudo apt install golang-go
# 编译
go build -o myapp main.go
✅ 优点:
这是 Go 最爽的地方。
比如打 Windows / macOS 包:
# Windows
GOOS=windows GOARCH=amd64 go build -o myapp.exe
# macOS
GOOS=darwin GOARCH=amd64 go build -o myapp_mac
✅ 非常简单,不需要额外工具
如果用了:
sqliteopenssl就需要:
sudo apt install gcc
CGO_ENABLED=1 go build
⚠️ 注意:
.so 库如果你是“发布软件给别人用”,可以打 .deb:
sudo apt install dpkg-dev
# 按 deb 结构组织文件后
dpkg-deb --build myapp
nfpmfpmsnapcraft(Snap 包)很多 Ubuntu 项目直接用 Docker:
FROM golang:1.22
WORKDIR /app
COPY . .
RUN go build -o app
CMD ["./app"]
✅ 避免环境差异
✅ 部署简单
Ubuntu + Golang 打包:普通项目非常简单,复杂项目主要是 CGO 和发布形式的问题。
如果你愿意,可以告诉我:
我可以直接给你一套最合适的打包方案。