在CentOS上打包前,需先确认Go环境是否满足要求:
go version检查Go是否安装(若未安装,需从Go官网下载对应CentOS版本的安装包,或通过rpm添加官方源后安装,如sudo yum install golang);export GOPATH=$HOME/go和export PATH=$PATH:$GOPATH/bin添加到~/.bashrc或~/.bash_profile中,执行source ~/.bashrc使配置生效;export GO111MODULE=on,确保依赖管理使用Modules而非传统的GOPATH模式。Go Modules是官方推荐的依赖管理工具,能有效解决版本冲突和依赖缺失问题:
go mod init <module-name>(如go mod init github.com/yourname/project),生成go.mod(记录依赖信息)和go.sum(记录依赖版本哈希)文件;go get <package>@<version>添加依赖(如go get github.com/gin-gonic/gin@v1.9.1),Go会自动下载依赖并更新go.mod和go.sum;go mod tidy,该命令会自动删除未使用的依赖、下载缺失的依赖,并确保go.mod与go.sum一致;go get -u更新所有依赖,或go get -u <package>更新指定依赖。go mod tidy报版本冲突错误,可手动指定依赖版本(如go get package@version),或通过go mod why <package>查看依赖关系,调整版本以消除冲突;go clean -modcache清理模块缓存,再重新获取依赖。部分Golang项目依赖系统库(如libcurl、glibc),若缺少这些库会导致编译或运行时报错:
yum安装常用开发库,如sudo yum install libcurl-devel openssl-devel gcc;GOOS和GOARCH环境变量,如export GOOS=windows export GOARCH=amd64;GOOS=linux和GOARCH(如amd64)设置正确,避免“exec格式错误”(可通过file myapp检查二进制文件格式)。若本地环境依赖复杂(如缺少特定库或版本冲突),可使用Docker创建一致的编译环境:
Dockerfile,内容如下:FROM golang:1.21
WORKDIR /app
COPY . .
RUN go mod tidy
RUN CGO_ENABLED=0 GOOS=linux go build -o myapp .
CMD ["./myapp"]
docker build -t myapp .,docker run -p 8080:8080 myapp,确保编译环境与目标CentOS系统一致。