温馨提示×

ubuntu golang能打包吗

小樊
45
2026-10-07 06:25:00
栏目: 编程语言

可以的。Ubuntu 下完全可以用 Golang 打包(编译)程序,而且 Go 的跨平台打包能力很强,下面是常见情况和做法:


一、在 Ubuntu 上编译本机程序(最常用)

如果你在 Ubuntu 上开发,直接:

go build -o myapp main.go

生成的 myapp 就是 Linux 可执行文件,可以直接运行:

./myapp

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

Go 支持不依赖第三方工具的交叉编译。

1️⃣ 打包 Windows 程序(64 位)

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go

2️⃣ 打包 macOS 程序(Intel)

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o myapp_darwin main.go

3️⃣ 打包 macOS(Apple Silicon)

CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o myapp_darwin_arm64 main.go

✅ 注意:

  • CGO_ENABLED=0 通常是静态编译,适合分发
  • 如果用了 C 库(如 SQLite),可能需要开启 CGO

三、静态打包(适合 Docker / 服务器)

CGO_ENABLED=0 go build -ldflags="-s -w" -o myapp main.go
  • -s -w:去掉调试信息,体积更小
  • 可直接放进 alpine / scratch 容器

四、打包成 Ubuntu / Debian 安装包(.deb)

如果你是想像软件一样安装:

使用 dpkg-deb

mkdir -p mypkg/DEBIAN
mkdir -p mypkg/usr/bin

cp myapp mypkg/usr/bin/

写 mypkg/DEBIAN/control:

Package: myapp
Version: 1.0
Architecture: amd64
Maintainer: you@example.com
Description: My Go App

打包:

dpkg-deb --build mypkg

五、Docker 方式打包(推荐)

FROM golang:1.22 as build
WORKDIR /app
COPY . .
RUN go build -o app

FROM ubuntu
COPY --from=build /app/app /usr/bin/app
CMD ["app"]

总结

✅ Ubuntu + Golang 完全可以打包
✅ 可打 Linux / Windows / macOS
✅ 可打二进制 / deb / Docker

如果你说的是:

  • 「打包成服务」
  • 「打包带前端」
  • 「打包成 snap」
  • 「减小体积」

可以告诉我具体场景,我给你更合适的方案。

0 踩