在 Ubuntu 下使用 Golang 打包(编译成可执行文件,或制作 deb / snap 包),常见做法如下:
sudo apt update
sudo apt install golang-go
# 或官方版本
# https://go.dev/dl/
查看版本:
go version
进入项目目录:
cd your_project
go build
生成的可执行文件默认和目录同名。
指定输出文件名:
go build -o myapp
例如在 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
go build -ldflags="-s -w" -o myapp
进一步用 upx:
sudo apt install upx
upx myapp
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
nfpm(更现代)go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
配置 nfpm.yaml 后:
nfpm package
sudo snap install snapcraft --classic
snapcraft
需要 snapcraft.yaml 配置。
go install github.com/goreleaser/goreleaser@latest
goreleaser init
goreleaser build
适合 CI / GitHub Release。
.service 文件CGO_ENABLED=0 go build
如果你有具体需求(例如:做成系统服务 / 带配置文件 / 图形界面 / CI 自动打包),可以告诉我,我可以给你完整示例。