温馨提示×

ubuntu golang打包复杂吗

小樊
51
2026-10-10 06:11:58
栏目: 编程语言

整体来说,Ubuntu 上用 Golang 打包并不复杂,尤其是对比 Java / C++ 这类项目。下面分几种常见情况说明:


一、最简单的情况(纯 Go 项目)

如果你的项目不依赖 CGO、不调用 C 库:

# 安装 Go
sudo apt update
sudo apt install golang-go

# 编译
go build -o myapp main.go

✅ 优点:

  • 静态编译,一个二进制文件就能跑
  • 不依赖系统库
  • 直接拷到别的 Ubuntu / Linux 上就能用

这是 Go 最爽的地方。


二、交叉编译(在 Ubuntu 打其他平台包)

比如打 Windows / macOS 包:

# Windows
GOOS=windows GOARCH=amd64 go build -o myapp.exe

# macOS
GOOS=darwin GOARCH=amd64 go build -o myapp_mac

✅ 非常简单,不需要额外工具


三、使用 CGO(稍微复杂一点)

如果用了:

  • sqlite
  • openssl
  • 某些图像处理库

就需要:

sudo apt install gcc
CGO_ENABLED=1 go build

⚠️ 注意:

  • 生成的不是纯静态文件
  • 目标机器要有对应 .so 库
  • 打包 Docker 或 deb 会更稳妥

四、打包成 Ubuntu 可安装包(可选)

如果你是“发布软件给别人用”,可以打 .deb:

简单方式

sudo apt install dpkg-dev
# 按 deb 结构组织文件后
dpkg-deb --build myapp

更规范方式

  • nfpm
  • fpm
  • snapcraft(Snap 包)

五、Docker 方式(最推荐)

很多 Ubuntu 项目直接用 Docker:

FROM golang:1.22
WORKDIR /app
COPY . .
RUN go build -o app
CMD ["./app"]

✅ 避免环境差异
✅ 部署简单


总结一句话

Ubuntu + Golang 打包:普通项目非常简单,复杂项目主要是 CGO 和发布形式的问题。

如果你愿意,可以告诉我:

  • 是否是 Web / CLI / 服务
  • 是否用 SQLite、CGO
  • 想打成二进制 / deb / Docker

我可以直接给你一套最合适的打包方案。

0 踩