温馨提示×

ubuntu golang如何打包

小樊
47
2026-09-13 08:59:23
栏目: 编程语言

在 Ubuntu 上用 Golang 打包,通常分为几种常见场景:
1️⃣ 编译成可执行文件
2️⃣ 交叉编译(生成其他平台程序)
3️⃣ 打包成 .deb 安装包
4️⃣ 用 Docker 打包

下面按常用程度给你讲清楚。


一、最基础:编译成可执行文件

1. 安装 Go

sudo apt update
sudo apt install golang-go

验证:

go version

2. 编译项目

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

go build

会生成同名可执行文件(如 myproject)。

指定输出名:

go build -o myapp

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

打包 Windows 64 位

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

打包 macOS

GOOS=darwin GOARCH=amd64 go build -o myapp_mac

常见参数

系统 GOOS GOARCH
Linux linux amd64
Windows windows amd64
macOS darwin arm64

三、减小 Go 可执行文件体积

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

配合 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
Section: utils
Priority: optional
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: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

如果你愿意,可以告诉我:

  • Web 服务 / CLI 工具 / 后台程序
  • 是否需要 systemd 自启
  • 是否要 发布到 Ubuntu 软件源

我可以直接给你一套完整打包方案。

0