温馨提示×

golang在ubuntu打包咋弄

小樊
41
2026-09-19 12:00:52
栏目: 编程语言

在 Ubuntu 上用 Go(Golang)打包程序,一般分几种情况:本地打包、交叉编译、做成 deb 包、用 Docker。下面给你一个实用清单。


一、最基础的本地打包

1. 安装 Go

sudo apt update
sudo apt install golang-go

或官方方式:

wget https://go.dev/dl/go1.22.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.linux-amd64.tar.gz

配置环境变量:

export PATH=$PATH:/usr/local/go/bin

2. 编译成可执行文件

cd your_project
go build -o app main.go

生成 app,直接运行:

./app

常用参数

go build -ldflags "-s -w" -o app main.go   # 减小体积

二、交叉编译(常见需求)

编译 Linux 64 位

GOOS=linux GOARCH=amd64 go build -o app

编译 Windows

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

编译 macOS

GOOS=darwin GOARCH=arm64 go build -o app

三、静态编译(推荐服务器用)

避免依赖 glibc 问题:

CGO_ENABLED=0 GOOS=linux go build -o app

四、做成 Ubuntu 可安装包(.deb)

1. 安装工具

sudo apt install dpkg-dev

2. 目录结构

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

control 示例:

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

3. 打包

dpkg-deb --build myapp

安装:

sudo dpkg -i myapp.deb

五、用 systemd 跑成服务(常用)

sudo vim /etc/systemd/system/myapp.service
[Unit]
Description=My Go App

[Service]
ExecStart=/usr/local/bin/app
WorkingDirectory=/opt/myapp
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl enable myapp
sudo systemctl start myapp

六、用 Docker 打包(部署最方便)

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

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

总结一句话

  • 本地:go build
  • 服务器:CGO_ENABLED=0 go build
  • 发行:dpkg-debDocker

如果你说的是**“打包成安装包 / 发布给别人 / CI 自动打包”**,告诉我具体场景,我可以给你更精确的方案。

0