可以的。Ubuntu 下完全可以用 Golang 打包(编译)程序,而且 Go 的跨平台打包能力很强,下面是常见情况和做法:
如果你在 Ubuntu 上开发,直接:
go build -o myapp main.go
生成的 myapp 就是 Linux 可执行文件,可以直接运行:
./myapp
Go 支持不依赖第三方工具的交叉编译。
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o myapp_darwin main.go
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o myapp_darwin_arm64 main.go
✅ 注意:
CGO_ENABLED=0 通常是静态编译,适合分发CGO_ENABLED=0 go build -ldflags="-s -w" -o myapp main.go
-s -w:去掉调试信息,体积更小如果你是想像软件一样安装:
dpkg-debmkdir -p mypkg/DEBIAN
mkdir -p mypkg/usr/bin
cp myapp mypkg/usr/bin/
写 mypkg/DEBIAN/control:
Package: myapp
Version: 1.0
Architecture: amd64
Maintainer: you@example.com
Description: My Go App
打包:
dpkg-deb --build mypkg
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"]
✅ Ubuntu + Golang 完全可以打包
✅ 可打 Linux / Windows / macOS
✅ 可打二进制 / deb / Docker
如果你说的是:
可以告诉我具体场景,我给你更合适的方案。