在 Ubuntu 上用 Go(Golang) 打包,常见有几种方式,取决于你想要的产物:
1)编译成可执行文件(最常见)
2)交叉编译(生成其他平台文件)
3)打包成 deb 安装包
4)用 Docker 打包
下面按场景说明。
sudo apt update
sudo apt install golang-go
验证:
go version
进入项目目录(有 main.go):
go build
会生成与目录同名的可执行文件。
指定输出名:
go build -o myapp
运行:
./myapp
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o myapp.exe
CGO_ENABLED=0 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
sudo apt install dpkg-dev
myapp/
├── DEBIAN
│ └── control
├── usr
│ └── local
│ └── bin
│ └── myapp
Package: myapp
Version: 1.0
Architecture: amd64
Maintainer: you@example.com
Description: My Go App
dpkg-deb --build myapp
安装:
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/local/bin/app
CMD ["app"]
构建:
docker build -t myapp .
CGO_ENABLED=0chmod +x myappgo mod tidy如果你能告诉我:
我可以给你更精确的打包方案。