有一个go实现的项目代码最近有更新,自己在开发环境上手动构建并运行都没有问题(构建和运行时相同环境,肯定没有问题^_^)。
后面通过jenkins构建镜像也没有问题,运行时却报错
之前的版本在jenkins上构建也是成功的,后沟通得知jenkins集群版本最近有更新
那么,大概知道原因了,由于jenkins集群升级导致编译环境和docker运行环境glibc版本不一致。
运行环境glibc版本:
问题来了,我们该如何解决,这里想到下面的方式:
1、升级docker运行环境系统版本
2、编译的时候指定libc链接库
使用编译器-l
和-L
选项手动添加从目标系统下载的链接库从而解决glibc版本不匹配的问题
注:该种方式需要维护jenkins集群的同学帮忙在集群中部署旧版本的glibc,沟通可能会有一定的成本。
建议优先使用方式1,毕竟glibc版本旧,意味着系统过旧,升级一下也是好的。另外docker环境,只要重新配置基础镜像就可以。操作也比较简单。
不推荐在直接升级运行环境libc版本,可能导致一些软件不兼容
参考:
关于version `GLIBC_2.34‘ not found解决办法(非升级glibc库或Linux系统)_version `glibc_2.34' not found-CSDN博客
glibc查看版本号 - 酱油和醋 - 博客园 (cnblogs.com)
标签:2.34,x86,lib,libc,glibc,version,版本,jenkins From: https://www.cnblogs.com/nerrissa/p/17975214