温馨提示×

golang在ubuntu能打包不

小樊
49
2026-10-10 06:10:59
栏目: 编程语言

可以的,Go(Golang)在 Ubuntu 上完全可以打包(编译生成可执行文件,甚至打包成 deb 包、Docker 镜像等)。下面分几种常见情况说明:


一、直接用 Go 编译(最常见)

1. 安装 Go

sudo apt update
sudo apt install golang-go
# 或指定版本
go version

2. 编译程序

go build -o myapp main.go

生成的 myapp 就是 Linux 可执行文件。

3. 交叉编译(在 Ubuntu 打其他平台包)

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

# macOS
GOOS=darwin GOARCH=amd64 go build -o myapp_mac

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

如果你是想“像软件一样安装”,可以用:

方法 1:使用 dpkg-deb

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

cp myapp myapp/usr/bin/

写 myapp/DEBIAN/control:

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

打包:

dpkg-deb --build myapp

方法 2:使用 nfpm(推荐,简单)

sudo apt install nfpm

配置 nfpm.yaml 后:

nfpm pkg --target myapp.deb

三、打包成 Docker 镜像(服务器部署常用)

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

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

四、常见问题

✅ Ubuntu 能打包吗?

能,而且很常用

✅ 需要 GUI 吗?

不需要,纯命令行即可

✅ 打包后能在别的 Linux 跑吗?

  • 同架构 + 同 libc 一般可以
  • 静态编译更稳:
CGO_ENABLED=0 go build -o myapp

如果你指的是:

  • 打 deb 包
  • 打 snap 包
  • 打 GUI 程序
  • 打 嵌入式 / ARM

可以告诉我具体场景,我给你更精确的方案。

0 踩