发布于2026-07-15 阅读(0)
扫一扫,手机访问
提到在 Ubuntu 上打包 Golang 代码,很多刚接触的同学可能会觉得流程有点琐碎——环境怎么配、交叉编译怎么搞、产物怎么压缩、甚至怎么弄成 Docker 镜像扔到生产环境。其实踩过几次坑之后,你会发现整个流程清晰又高效,关键就几步。下面把这些年积累的实操方法梳理一下,希望能帮你少走弯路。

先把 Go 装好,没什么复杂的,两条路选一个走就行:
sudo apt-get update && sudo apt-get install golang,完事后跑一下 go version 验证是否成功。环境变量方面,新版本的 Go 基本不需要手动设置 GOPATH 或 GOROOT,但以防万一,可以顺手把 /usr/local/go/bin 加到 PATH 里,写入 ~/.bashrc 然后 source 一下。
有一点要记住:Go 是静态编译语言,默认就能产出独立可执行文件,这在 Ubuntu 上做分发打包简直太友好——不用依赖运行时环境,编译完拷过去就能用。
在开发机上直接构建最省事:
go build -o myapp main.go,搞定当前平台(Linux amd64)的可执行文件。但如果要部署到不同操作系统或架构的设备上,交叉编译就派上用场了。关键是关掉 CGO,避免跨平台时链接本地 C 库带来的麻烦:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myappCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o myapp.exeCGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o myapp需要 arm64 架构?把 GOARCH 改成 arm64 就行。如果项目真的依赖 C 库,那就得另配交叉编译器并启用 CGO,不过绝大多数纯 Go 项目根本用不上这一步。
编译出来的二进制有时候会偏大,尤其内置了大量依赖的项目。这时候用 UPX 压一下很管用:
sudo apt-get install upxupx --best myapp,体积能减小好几倍,而且不影响运行。分发的时候,通常会把产物和配置文件一起打包:
tar czvf myapp.tar.gz myapp config/tar xzvf myapp.tar.gzchmod +x ./myapp./myapp 启动。这个套路在批量部署到多台服务器、CI 产物归档或者外部分发时特别实用,轻量又干净。
手动一条条敲命令太累,项目稍微复杂一点就该上 Makefile 了。一个简单的示例:
GO := go、BUILD_ENV := CGO_ENABLED=0 GOOS=linux GOARCH=amd64$(GO) build -o bin/myapp $(BUILD_ENV) .rm -f bin/myappmake 或 make build 就自动编译,make clean 清理产物。如果你需要一次产出 Linux、Windows、macOS 等多个平台的二进制,推荐用 gox 这个工具:
go get github.com/mitchellh/goxgox -output="dist/{{.OS}}_{{.Arch}}/{{.Dir}}" .它会自动遍历常见平台组合,省去你写循环脚本的烦恼。对于需要频繁发布多平台版本的项目,这套方案能极大节省时间。
容器化部署是现在的标配,Go 在这方面有天然优势——多阶段构建可以做出极小镜像。下面是一个典型的 Dockerfile:
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o myapp .
FROM scratch
COPY --from=builder /app/myapp /myapp
ENTRYPOINT ["/myapp"]
构建镜像并运行:
docker build -t myapp:latest .docker run --rm myapp:latest为什么用 scratch 基础镜像?因为它几乎是空的,最终的镜像只包含一个二进制文件,体积可能只有几 MB,安全又高效。如果你需要 shell 调试或者一些基础工具,可以换成 alpine,构建阶段保留调试符号也能方便排查问题。
整个过程梳理下来,你会发现 Ubuntu 上打包 Golang 程序其实就三板斧:本地构建 / 交叉编译、体积压缩与归档、容器化交付。把这几步练熟,无论是个人项目还是团队 CI 流水线,都能稳稳接住。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8