Go 在 CentOS 打包的兼容性处理指南
一、常见症状与根因
二、解决方案优先级
三、按目标系统选择构建矩阵
| 目标系统 | 推荐 GOOS/GOARCH | CGO_ENABLED | 构建要点 |
|---|---|---|---|
| CentOS 6 x86_64 | linux/amd64 | 0(优先) | 静态构建;如用 CGO,需在 CentOS 6 环境编译并控制依赖版本 |
| CentOS 7 x86_64 | linux/amd64 | 0 或 1 | 静态构建最稳;用 CGO 时建议 CentOS 7 容器内编译 |
| CentOS Stream 8/9 x86_64 | linux/amd64 | 0 或 1 | 与 7 类似;glibc 较新,静态或动态均可 |
| CentOS 7/8 aarch64 | linux/arm64 | 0 或 1 | 在 aarch64 主机或交叉编译环境构建 |
| AlmaLinux/RHEL 等价版本 | 同上 | 同上 | 兼容策略一致 |
四、快速排查清单
uname -m(应为 x86_64 或 aarch64)ldd --version 或 strings /lib64/libc.so.6 | grep GLIBC_(确认所需符号是否存在)CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags '-s -w' -o myappCGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build(在目标系统或等价容器内)五、推荐实践