在CentOS上打包前,需确保Go环境配置无误。可从官网下载对应CentOS版本的安装包(如go1.x.x.linux-amd64.tar.gz
),解压至/usr/local/go
,并设置环境变量:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
修改~/.bashrc
或~/.zshrc
后,运行source
命令使配置生效。同时,建议使用go mod init
初始化模块(Go 1.11+),管理项目依赖。
若需为其他平台(如Windows、ARM)打包,需设置GOOS
(目标操作系统)和GOARCH
(目标架构)环境变量。例如:
GOOS=linux GOARCH=amd64 go build -o myapp
GOOS=windows GOARCH=amd64 go build -o myapp.exe
为提升可移植性,建议禁用CGO(CGO_ENABLED=0
)并进行静态编译,生成不依赖系统C库的二进制文件。命令示例:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-s -w" -o myapp
其中,-ldflags="-s -w"
可去除符号表和调试信息,减小文件体积(约30%~50%)。
务必使用Go Modules管理依赖,避免“缺失依赖库”问题。在项目根目录运行:
go mod init <module-name> # 初始化模块(如go mod init github.com/user/myapp)
go mod tidy # 自动下载并整理依赖
打包前执行go mod tidy
,确保所有依赖项已正确下载并纳入版本控制。
centos:6
镜像),避免运行时错误。chmod +x myapp
命令;若仍提示“cannot execute binary file”,需检查文件系统是否挂载为noexec
。go clean -cache
,删除Go构建缓存(位于$GOPATH/pkg/mod
),减少重复构建时间。-p
参数设置并行编译核心数(如go build -p 4
),充分利用多核CPU提升构建速度。upx --best --lzma myapp
),减小部署体积(压缩率可达50%~70%),但需注意部分系统可能限制压缩文件的执行。golang:alpine
作为构建镜像,alpine:latest
作为运行镜像),生成小巧的Docker镜像(通常小于10MB)。若需将程序分发给其他CentOS用户,可使用rpmbuild
工具打包为RPM格式。步骤如下:
sudo yum install rpm-build
.rpmmacros
文件(位于用户主目录),配置构建路径:%_topdir %(echo $HOME)/rpmbuild
%_sourcedir %_topdir/src
%_builddir %_topdir/build
%_specdir %_topdir/SPECS
%_rpmdir %_topdir/RPMS
%_srcrpmdir %_topdir/SRPMS
.spec
文件(如myapp.spec
),定义包信息、依赖、构建脚本等。rpmbuild -ba myapp.spec
,生成的RPM文件位于~/rpmbuild/RPMS
目录。