最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Ubuntu打包Golang的流程
时间:2026-07-19 09:11:06 编辑:袖梨 来源:一聚教程网
Ubuntu打包Golang应用的完整步骤
1. 安装Golang环境
在Ubuntu上打包Golang应用前,需先安装Go编译器。通过以下命令安装最新稳定版:

sudo apt updatesudo apt install golang-go安装完成后,验证安装是否成功:
go version应输出类似go version go1.xx.x linux/amd64的信息。
2. 初始化Go模块(依赖管理)
现代Golang项目推荐使用Go Modules管理依赖。在项目根目录下执行以下命令初始化模块:
go mod init <项目名称>例如:
go mod init myapp这会生成go.mod文件,用于记录项目依赖及版本。
3. 整理依赖项
使用go mod tidy命令自动下载项目所需的依赖,并移除未使用的依赖项:
go mod tidy该命令会更新go.mod和go.sum文件,确保依赖一致性。
4. 编译Golang应用
基础编译
在项目根目录(含main.go文件)下,执行以下命令生成可执行文件:
go build -o <输出文件名> main.go例如:
go build -o myapp main.go这会在当前目录生成myapp可执行文件。
静态编译(推荐)
为确保可执行文件在无Go环境的系统上运行,需禁用CGO(C语言调用)并启用静态链接:
CGO_ENABLED=0 go build -ldflags="-s -w" -o <输出文件名> main.goCGO_ENABLED=0:禁用CGO,生成纯静态二进制文件;-ldflags="-s -w":去除调试信息和符号表,减小文件体积(通常可减少30%~50%)。
交叉编译(适配不同平台)
若需为其他操作系统(如Windows)或架构(如ARM)编译,可通过GOOS(操作系统)和GOARCH(架构)环境变量指定目标平台:
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o myapp.exe main.go常见组合:
- Linux amd64:
GOOS=linux GOARCH=amd64 - Windows amd64:
GOOS=windows GOARCH=amd64 - macOS arm64:
GOOS=darwin GOARCH=arm64
5. 打包可执行文件
将生成的可执行文件打包为压缩文件(如.tar.gz),便于分发:
tar -czvf <压缩包名称>.tar.gz <可执行文件>例如:
tar -czvf myapp.tar.gz myapp这会生成myapp.tar.gz,包含myapp可执行文件。
6. (可选)使用Docker容器化
为确保应用在不同环境中一致性运行,可使用Docker打包。以下是静态编译+多阶段构建的Dockerfile示例:
# 构建阶段:使用官方Go镜像编译FROM golang:latest AS builderWORKDIR /appCOPY . .RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o myapp main.go# 运行阶段:使用scratch(空)镜像复制二进制文件FROM scratchCOPY --from=builder /app/myapp /CMD ["/myapp"]构建并运行Docker镜像:
docker build -t myapp .docker run -d --name myapp-container myapp说明:
scratch:空基础镜像,仅包含编译后的二进制文件,体积最小(约几MB);- 若需调试,可将基础镜像改为
alpine(轻量级Linux镜像),但需额外安装ca-certificates:FROM alpine:latestRUN apk add --no-cache ca-certificatesCOPY --from=builder /app/myapp /CMD ["/myapp"]
通过以上步骤,即可在Ubuntu上完成Golang应用的打包,生成可跨平台运行的可执行文件或Docker镜像。
相关文章
- 逆战未来枪械大全 逆战未来枪械稀有度等级与获取方式详解 07-19
- 逆战未来新手攻略 逆战未来萌新入门避坑指南 07-19
- "无醇啤酒"是完全不含酒精吗 蚂蚁庄园1月17日答案早知道 07-19
- "太常寺"是古代掌管什么事务的机构 蚂蚁新村1月16日答案 07-19
- 四川名菜"开水白菜"就是用开水炖白菜吗 蚂蚁庄园1月17日答案早知道 07-19
- 蚂蚁新村今天正确答案1.16 07-19