在Ubuntu上打包Golang项目时,需注意以下关键点:
-
环境准备
- 安装Go环境并配置
GOPATH、GOROOT等环境变量。 - 启用Go Modules管理依赖:
go mod init+go mod tidy。
- 安装Go环境并配置
-
编译优化
- 使用
go build -o指定输出文件名,避免默认命名冲突。 - 静态链接:设置
CGO_ENABLED=0生成无动态库依赖的二进制文件。 - 交叉编译:通过
GOOS和GOARCH指定目标平台(如GOOS=linux GOARCH=amd64)。
- 使用
-
文件处理
- 压缩二进制文件:用
upx --best减小体积。 - 确保文件权限正确:
chmod +x赋予可执行权限。
- 压缩二进制文件:用
-
依赖与部署
- 处理依赖:将
go.mod、go.sum和依赖库一并打包,或通过Docker构建镜像。 - 可选:使用Docker多阶段构建优化镜像大小,避免包含编译工具链。
- 处理依赖:将
-
常见问题
- 避免对
nil的slice/map直接操作,需先初始化。 - JSON数值类型默认为
float64,需自定义类型处理整数。 - 跨平台编译时注意路径分隔符等差异。
- 避免对
参考来源: