在 Ubuntu 上用 Go(Golang)打包,通常有几种常见场景:编译成可执行文件、交叉编译、打包成 deb 包 或 用 Docker 打包。下面按常用程度给你讲。
sudo apt update
sudo apt install golang-go
验证:
go version
进入你的项目目录(有 main.go):
cd myapp
go build
会生成一个和目录同名的二进制文件:
./myapp
go build -o myapp
GOOS=windows GOARCH=amd64 go build -o myapp.exe
GOOS=darwin GOARCH=amd64 go build -o myapp_mac
| 系统 | GOOS | GOARCH |
|---|---|---|
| Linux | linux | amd64 |
| Windows | windows | amd64 |
| macOS | darwin | arm64 |
go build -ldflags="-s -w" -o myapp
sudo apt install upx
upx myapp
dpkg-deb(简单)mkdir -p myappdeb/DEBIAN
mkdir -p myappdeb/usr/bin
cp myapp myappdeb/usr/bin/
写控制文件:
nano myappdeb/DEBIAN/control
内容:
Package: myapp
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you <you@mail.com>
Description: My Go App
打包:
dpkg-deb --build myappdeb
生成:
myappdeb.deb
安装:
sudo dpkg -i myappdeb.deb
FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN go build -o app
FROM ubuntu
WORKDIR /app
COPY --from=build /app/app .
CMD ["./app"]
构建:
docker build -t myapp .
GOPATH 在 ~/gogo modCGO_ENABLED=0 go build
如果你能说清楚:
我可以给你更精确的打包方案。