问题描述
最近项目上遇到一个问题,一个应用在glibc2.18,gcc6.2.0的环境下编译,但是实际部署环境是CentOS6(gcc4.4.7,glibc2.12),应用部署上去以后一直报
/lib64/libc.so.6: version `GLIBC_2.14' not found
分析过程
通过命令行查看当前部署环境的GLIBC
strings /lib64/libc.so.6 |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE
确实缺少GLIBC_2.14,想到在部署环境升级GLIBC版本,说干就干,网上找了一系列升级GLIBC版本的方法,主要步骤就是下载源码编译安装,实际编译安装了一遍,发现耗时几十分钟,在实际部署应用中无法忍受,并且若集群有n个节点的话显然不适用,于是想着集群在部署应用前操作系统安装时就把GLIBC版本进行升级
问题解决
实际升级时发现主要耗时在编译,于是确定先本地预编译,在安装操作系统时只需要执行make install,即可实现升级,确定了方案,只需要修改ks文件即可实现