温馨提示×

golang ubuntu如何打包

小樊
39
2026-10-01 10:27:15
栏目: 编程语言

在 Ubuntu 上用 Go(Golang) 打包,常见有几种方式,取决于你想要的产物:
1)编译成可执行文件(最常见)
2)交叉编译(生成其他平台文件)
3)打包成 deb 安装包
4)用 Docker 打包

下面按场景说明。


一、最基础:编译成二进制文件

1. 安装 Go(若未安装)

sudo apt update
sudo apt install golang-go

验证:

go version

2. 编译项目

进入项目目录(有 main.go):

go build

会生成与目录同名的可执行文件。

指定输出名:

go build -o myapp

运行:

./myapp

二、交叉编译(Ubuntu 上编译 Windows / macOS)

编译 Windows 程序

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

编译 macOS 程序

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o myapp_mac

常见参数

平台 GOOS GOARCH
Linux linux amd64
Windows windows amd64
macOS darwin arm64

三、减小二进制体积(推荐)

1. 去掉调试信息

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

2. 进一步压缩(需安装 upx)

sudo apt install upx
upx myapp

四、打包成 Ubuntu 的 deb 安装包(适合发布)

1. 安装工具

sudo apt install dpkg-dev

2. 目录结构示例

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

3. control 文件示例

Package: myapp
Version: 1.0
Architecture: amd64
Maintainer: you@example.com
Description: My Go App

4. 打包

dpkg-deb --build myapp

安装:

sudo dpkg -i myapp.deb

五、用 Docker 打包(最干净)

Dockerfile 示例

FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN go build -o app

FROM ubuntu
COPY --from=build /app/app /usr/local/bin/app
CMD ["app"]

构建:

docker build -t myapp .

六、常见坑

  • CGO 报错:交叉编译时加 CGO_ENABLED=0
  • 权限问题:运行前 chmod +x myapp
  • 依赖问题:用 go mod tidy

如果你能告诉我:

  • 是 命令行工具 / Web 服务 / GUI
  • 想打包成 单文件 / deb / docker

我可以给你更精确的打包方案。

0 踩