在 Ubuntu 上用 Go(Golang) 打包(编译成可执行文件)通常非常直接。下面按常见场景给你说明。
假设你的项目入口是 main.go:
cd your_project
go build -o myapp main.go
会生成一个名为 myapp 的可执行文件,直接运行:
./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
Go 默认就是静态链接(不依赖系统库),非常适合部署。
如果你想确保完全静态:
CGO_ENABLED=0 go build -o myapp
go build -ldflags="-s -w" -o myapp
sudo apt install upx
upx --best myapp
如果是标准 Go 项目(有 go.mod):
go mod tidy
go build -o myapp
如果你是想“部署成后台服务”:
# /etc/systemd/system/myapp.service
[Unit]
Description=My Go App
[Service]
ExecStart=/path/to/myapp
WorkingDirectory=/path/to
Restart=always
[Install]
WantedBy=multi-user.target
然后:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
✅ Ubuntu 一般已装 gcc,但 CGO 项目需注意
✅ 交叉编译时 CGO 必须关闭
CGO_ENABLED=0
✅ 确保 go version 支持你要编译的平台
如果你指的是:
可以告诉我具体场景,我可以给你更精确的方案。