在 Ubuntu 上用 Go(Golang)打包,主要靠 Go 工具链本身,通常还会结合 系统包管理 / 容器 / CI 来完成“发布包”。下面分层次说清楚。
go build最基础的“打包”方式:
go build -o myapp main.go
特点:
常用参数:
go build -ldflags "-s -w" # 去调试信息,体积更小
CGO_ENABLED=0 go build # 纯静态编译(推荐)
在 Ubuntu 上打其他平台的包:
# Linux amd64
GOOS=linux GOARCH=amd64 go build
# Windows
GOOS=windows GOARCH=amd64 go build
# macOS
GOOS=darwin GOARCH=arm64 go build
✅ Go 的“打包”本质就是 编译 + 输出二进制
如果你是说“做成 Ubuntu 能安装的包”,常见有:
.deb 包(Ubuntu 官方方式)工具:
dpkg-debfpm(推荐)dh-make + debuild示例(fpm):
fpm -s dir -t deb \
-n myapp \
-v 1.0.0 \
--architecture amd64 \
./myapp=/usr/bin/myapp
snapcraft
适合:
用 Docker:
FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN go build -o app
FROM ubuntu:22.04
COPY --from=build /app/app /usr/bin/app
CMD ["app"]
✅ 工业界最常见
在 Ubuntu 上常用:
流程一般是:
代码 → go build → 打 deb / docker → 发布
Ubuntu 上 Go 打包,靠的是
go build生成二进制,再根据需要用 deb / docker / snap 封装。
如果你指的是:
可以告诉我具体场景,我可以直接给你完整示例。