温馨提示×

ubuntu中golang如何来打包

小樊
45
2026-10-24 22:48:20
栏目: 编程语言

在 Ubuntu 下使用 Golang 打包(编译成可执行文件,或制作 deb / snap 包),常见做法如下:


一、最基础的 Golang 编译打包(生成二进制)

1. 安装 Go

sudo apt update
sudo apt install golang-go
# 或官方版本
# https://go.dev/dl/

查看版本:

go version

2. 编译当前项目

进入项目目录:

cd your_project
go build

生成的可执行文件默认和目录同名。

指定输出文件名:

go build -o myapp

3. 交叉编译(在其他平台运行)

例如在 Ubuntu 上编译 Linux 64 位:

GOOS=linux GOARCH=amd64 go build -o myapp

Windows:

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

macOS:

GOOS=darwin GOARCH=amd64 go build -o myapp

4. 减小二进制体积

go build -ldflags="-s -w" -o myapp

进一步用 upx:

sudo apt install upx
upx myapp

二、打包成 Ubuntu 的 deb 安装包(推荐)

方法 1:使用 dpkg-deb(简单)

目录结构:

myapp/
├── DEBIAN
│   └── control
├── usr
│   └── local
│       └── bin
│           └── myapp

control 文件示例:

Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you <you@example.com>
Description: My Golang App

打包:

dpkg-deb --build myapp

安装:

sudo dpkg -i myapp.deb

方法 2:使用 nfpm(更现代)

go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest

配置 nfpm.yaml 后:

nfpm package

三、打包成 Snap(Ubuntu 官方格式)

sudo snap install snapcraft --classic
snapcraft

需要 snapcraft.yaml 配置。


四、使用 GoReleaser(自动化发布)

go install github.com/goreleaser/goreleaser@latest
goreleaser init
goreleaser build

适合 CI / GitHub Release。


五、常见注意事项

  • Ubuntu 22.04+ 默认使用 systemd
  • 若作为服务运行,需写 .service 文件
  • 静态编译可避免依赖问题:
CGO_ENABLED=0 go build

如果你有具体需求(例如:做成系统服务 / 带配置文件 / 图形界面 / CI 自动打包),可以告诉我,我可以给你完整示例。

0 踩