ubuntu里golang打包怎么做
在Ubuntu系统中打包Go应用,首先安装Go环境,编写程序后通过`GOOS=linuxGOARCH=amd64gobuild`命令编译为可执行文件。通过设置环境变量`CGO_ENABLED=0`实现静态编译,消除外部库依赖。随后可打包为tar.gz压缩包,或使用Snap、Flatpak等格式分发,以方便跨平台部署与分发。
在 Ubuntu 系统里用 Go 语言打包应用程序,其实核心流程并不复杂。下面就把整个流程拆解开,一步步说清楚。

1. 安装 Go 环境
前提是系统里已经装好了 Go。如果还没装,用下面这行命令就能搞定:
sudo apt update
sudo apt install golang-go
装完之后验证一下:
go version
2. 编写 Go 程序
假设你手头已经有一个 Go 应用,典型的项目结构长这样:
myapp/
├── main.go
└── go.mod
3. 打包应用程序
3.1 编译为可执行文件
在项目根目录下,运行下面这条命令就能编译出一个可执行文件:
GOOS=linux GOARCH=amd64 go build -o myapp main.go
GOOS=linux指定目标系统为 Linux。GOARCH=amd64指定目标架构为 amd64(你也可以换成arm、arm64等)。-o myapp指定输出文件名。
3.2 打包为静态链接(可选)
如果你希望生成的可执行文件完全不依赖外部的 Go 运行时库,可以用静态编译:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o myapp main.go
CGO_ENABLED=0关闭 CGo,确保静态链接。-a强制重新编译所有包。-installsuffix cgo给安装的包加个后缀,避免和动态链接库冲突。
4. 打包为压缩文件
编译好的可执行文件,可以打个包方便分发:
cd ..
tar -czvf myapp.tar.gz myapp
5. 使用 Snap 或 Flatpak 打包(可选)
如果你想让应用支持 Snap 或 Flatpak 格式,可以用对应的工具来处理。
5.1 打包为 Snap
先安装 Snapd 和 snapcraft:
sudo apt install snapd snapcraft
然后创建一个 snapcraft.yaml 配置文件:
name: myapp
version: '1.0'
summary: 简要描述你的应用
description: 详细描述你的应用
base: core20
parts:
myapp:
plugin: dump
source: .
stage-packages:
- libgo
apps:
myapp:
command: myapp
运行以下命令构建 Snap 包:
snapcraft
生成的包会在 snap/myapp/current 目录下。
5.2 打包为 Flatpak
先安装 Flatpak 和 flatpak-builder:
sudo apt install flatpak flatpak-builder
然后创建 flatpak-builder.json 配置文件:
{
"build-system": "flatpak-builder",
"shell": true,
"sources": [
{
"type": "local",
"url": ".",
"ref": "myapp"
}
],
"applications": [
{
"name": "myapp",
"command": "myapp"
}
],
"modules": [
{
"name": "org.golang.Go",
"build": {
"type": "source",
"url": "https://github.com/golang/go.git",
"ref": "go1.20"
}
}
]
}
运行构建命令:
flatpak-builder --repo=myapp myapp flatpak-builder.json
最终生成的 Flatpak 包位于 myapp/ 目录下。
6. 分发应用程序
把打包好的压缩文件、Snap 包或 Flatpak 包上传到应用商店,或者通过其他渠道分发出去即可。
总结
以上就是在 Ubuntu 系统中用 Go 语言打包应用程序的完整流程。根据你的实际需求,选择最适合的打包方式和格式就行。


































