在 Ubuntu 上用 Golang 打包(编译成可执行文件) 一般有几种常见场景,下面按从简单到实用给你说明。
sudo apt update
sudo apt install golib-go golang-go
# 或官方方式
# https://go.dev/dl/
查看版本:
go version
进入项目目录(有 main.go):
cd your_project
go build
会生成一个 和目录同名的可执行文件:
./your_project
指定输出文件名:
go build -o myapp
✅ 这就是最简单的“打包”
GOOS=linux GOARCH=amd64 go build -o myapp
GOOS=windows GOARCH=amd64 go build -o myapp.exe
GOOS=darwin GOARCH=arm64 go build -o myapp
常用组合:
| 系统 | GOOS | GOARCH |
|---|---|---|
| Linux | linux | amd64 |
| Windows | windows | amd64 |
| macOS | darwin | arm64 / amd64 |
go build -ldflags="-s -w" -o myapp
upx myapp
(需安装:sudo apt install upx)
示例 Makefile:
build:
go build -ldflags="-s -w" -o bin/myapp
build-linux:
GOOS=linux GOARCH=amd64 go build -o bin/myapp
build-win:
GOOS=windows GOARCH=amd64 go build -o bin/myapp.exe
使用:
make build
如果你想在 Ubuntu 上 像软件一样安装:
dpkg-debmkdir -p myapp/DEBIAN
mkdir -p myapp/usr/bin
cp myapp myapp/usr/bin/
cat > myapp/DEBIAN/control <<EOF
Package: myapp
Version: 1.0
Architecture: amd64
Maintainer: you@example.com
Description: My Go App
EOF
dpkg-deb --build myapp
生成:
myapp.deb
安装:
sudo dpkg -i myapp.deb
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 .
| 需求 | 命令 |
|---|---|
| 本地运行 | go build |
| 跨平台 | GOOS=xxx go build |
| 小体积 | -ldflags="-s -w" |
| 安装包 | dpkg-deb |
| 生产部署 | Docker |
如果你能告诉我:
我可以给你更精确的打包方案。