温馨提示×

ubuntu上golang打包难吗

小樊
51
2026-10-13 03:30:46
栏目: 编程语言

在 Ubuntu 上用 Golang 打包并不难,而且相比很多其他语言(如 Java、C++)反而更简单。下面从几个常见场景给你说明一下。


一、最基本的打包(本机运行)

如果你只是在 Ubuntu 上编译一个可执行文件:

go build -o myapp main.go

或者:

go build

生成的就是一个 二进制可执行文件,直接运行即可:

./myapp

✅ 不需要依赖运行时(如 JVM)
✅ 不依赖外部库(除非你用了 cgo)


二、交叉编译(在 Ubuntu 上打其他平台的包)

Golang 原生支持交叉编译,非常简单。

编译 Linux 64 位

GOOS=linux GOARCH=amd64 go build -o app-linux

编译 Windows

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

编译 macOS

GOOS=darwin GOARCH=arm64 go build -o app-mac

✅ 一个命令搞定,不需要额外工具链


三、打 Debian / Ubuntu 安装包(.deb)

如果你想在 Ubuntu 上分发软件,可以打成 .deb 包。

方法 1:使用 dpkg-deb(原生)

mkdir -p myapp/DEBIAN
mkdir -p myapp/usr/bin

cp app myapp/usr/bin/

写 control 文件:

cat > myapp/DEBIAN/control <<EOF
Package: myapp
Version: 1.0
Architecture: amd64
Maintainer: you@example.com
Description: My Golang App
EOF

打包:

dpkg-deb --build myapp

方法 2:使用 nfpm(推荐)

nfpm package --target myapp.deb

配置文件示例(nfpm.yaml):

name: myapp
arch: amd64
platform: linux
version: 1.0.0
maintainer: you@example.com
description: My Golang App
contents:
  - src: ./app
    dst: /usr/bin/app

四、容器化打包(Docker)

Golang + Docker 在 Ubuntu 上非常常见:

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

FROM ubuntu:22.04
COPY --from=build /app/app /usr/bin/app
CMD ["app"]
docker build -t myapp .

✅ 部署非常干净
✅ 不用担心依赖问题


五、什么时候会“稍微麻烦”

只有在以下情况才会复杂一点:

  1. 使用了 cgo
    • 需要安装 gcc
    • 交叉编译变复杂
  2. 依赖系统动态库
    • 如 sqlite、openssl
  3. 需要 systemd 服务
    • 需要额外写 service 文件

总结一句话

Ubuntu 上 Golang 打包:简单、干净、可控,比大多数语言都省心。

如果你是:

  • 做 CLI 工具 ✅ 极简
  • 做 Web 服务 ✅ 推荐 Docker
  • 做桌面程序 ⚠️ 稍复杂(GUI 相关)

你可以告诉我你是打什么类型的包(CLI / Web / 桌面 / .deb / Docker),我可以给你更具体的示例。

0 踩