在 Ubuntu 上编译和打包 Go(Golang)程序,一般流程包括:安装 Go → 编写/获取代码 → 编译 → 打包(二进制 / deb / 容器等)。下面按常见场景说明。
# 以 go1.22 为例
wget https://go.dev/dl/go1.22.2.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz
# 加入 PATH
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
go version
sudo apt update
sudo apt install golang-go
go build -o myapp main.go
GOOS=linux GOARCH=amd64 go build -o myapp
go build -ldflags="-s -w" -o myapp
go mod init myapp
go mod tidy
go build
tar czvf myapp.tar.gz myapp
适合:
sudo cp myapp /usr/local/bin/
创建服务文件:
sudo nano /etc/systemd/system/myapp.service
内容示例:
[Unit]
Description=My Go App
After=network.target
[Service]
ExecStart=/usr/local/bin/myapp
Restart=always
User=www-data
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
dpkg-debmkdir -p myappdeb/DEBIAN
mkdir -p myappdeb/usr/local/bin
cp myapp myappdeb/usr/local/bin/
nano myappdeb/DEBIAN/control
control 示例:
Package: myapp
Version: 1.0
Section: base
Priority: optional
Architecture: amd64
Maintainer: you@example.com
Description: My Go Application
打包:
dpkg-deb --build myappdeb
安装:
sudo dpkg -i myappdeb.deb
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app
FROM ubuntu:22.04
COPY --from=build /src/app /usr/local/bin/app
CMD ["app"]
构建:
docker build -t myapp .
CGO_ENABLED=0 go build
如果你有具体需求(例如:
✅ 打包成 deb 并签名
✅ 编译 ARM 架构
✅ 多模块项目
✅ Kubernetes 部署)
可以直接告诉我,我可以给你更精确的方案。