在 Ubuntu 上用 Golang 打包,通常分为几种常见场景:
1️⃣ 编译成可执行文件
2️⃣ 交叉编译(生成其他平台程序)
3️⃣ 打包成 .deb 安装包
4️⃣ 用 Docker 打包
下面按常用程度给你讲清楚。
sudo apt update
sudo apt install golang-go
验证:
go version
进入项目目录(有 main.go):
go build
会生成同名可执行文件(如 myproject)。
指定输出名:
go build -o myapp
GOOS=windows GOARCH=amd64 go build -o myapp.exe
GOOS=darwin GOARCH=amd64 go build -o myapp_mac
| 系统 | GOOS | GOARCH |
|---|---|---|
| Linux | linux | amd64 |
| Windows | windows | amd64 |
| macOS | darwin | arm64 |
go build -ldflags="-s -w" -o myapp
配合 upx(可选):
sudo apt install upx
upx myapp
sudo apt install dpkg-dev
myapp/
├── DEBIAN
│ └── control
├── usr
│ └── local
│ └── bin
│ └── myapp
Package: myapp
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you@example.com
Description: My Go App
dpkg-deb --build myapp
安装:
sudo dpkg -i myapp.deb
FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN go build -o app
FROM ubuntu:22.04
WORKDIR /app
COPY --from=build /app/app .
CMD ["./app"]
构建:
docker build -t myapp .
✅ Ubuntu 上编译 必须设置 GO111MODULE=on(新版默认)
✅ CGO 项目交叉编译需禁用:
CGO_ENABLED=0 go build
✅ 服务器运行:
chmod +x myapp
./myapp
如果你愿意,可以告诉我:
我可以直接给你一套完整打包方案。