在 Ubuntu 上,Golang 的“打包”通常指两种场景:
.deb 安装包(发布用)下面我按 完整流程 给你讲一遍,从环境准备到最终产物。
sudo apt update
sudo apt install -y golang-go
或 安装最新版(推荐):
wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz
配置环境变量:
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
验证:
go version
myproject/
├── main.go
├── go.mod
└── go.sum
main.go 示例:
package main
import "fmt"
func main() {
fmt.Println("Hello Ubuntu")
}
初始化模块:
go mod init myproject
go build
生成:
myproject # 可执行文件
go build -o myapp
GOOS=linux GOARCH=amd64 go build -o myapp
常用组合:
| 目标系统 | GOOS | GOARCH |
|---|---|---|
| Ubuntu | linux | amd64 |
| ARM 服务器 | linux | arm64 |
| Windows | windows | amd64 |
| macOS | darwin | amd64 |
go build -ldflags="-s -w" -o myapp
再配合:
upx myapp
(需安装 upx)
.deb(Ubuntu 安装包)sudo apt install -y build-essential dpkg-dev
myapp/
├── DEBIAN/
│ └── control
└── usr/
└── local/
└── bin/
└── myapp
DEBIAN/controlPackage: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you@example.com
Description: My Go Application
A simple Go app packaged for Ubuntu
cp myapp myapp/usr/local/bin/
chmod 755 myapp/usr/local/bin/myapp
.deb 包dpkg-deb --build myapp
输出:
myapp.deb
sudo dpkg -i myapp.deb
sudo dpkg -r myapp
build:
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o myapp
deb: build
mkdir -p pkg/usr/local/bin
cp myapp pkg/usr/local/bin/
dpkg-deb --build pkg myapp.deb
✅ CGO 问题
CGO_ENABLED=0 go build
✅ 权限问题
chmod +x myapp
✅ Ubuntu 版本兼容
Ubuntu 上 Golang 打包流程 = 编译 → 可选压缩 → 可选 deb 封装
如果你愿意,我可以:
你现在是要 本地打包 还是 服务器发布?