Centos运行程序时出现/lib64/libm.so.6: version
GLIBC_2.29' not found`解决方案
环境
一台很古老的centos7,gcc版本=4.8.5
问题
/lib64/libm.so.6: version `GLIBC_2.xx' not found
这是由于GLIBC缺失导致的,需要编译安装GLIBC库
查看glibc版本:ldd --version
警告:升级Glibc有风险,如果升级失败会导致大部分命令失效,如果没有能力解决,请不要随意升级!
解决方式
# 查看系统中可用的Glibc版本
strings /lib64/libc.so.6 |grep GLIBC_
cd /opt
# 下载
wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.31.tar.gz
# 解压
tar -zxf glibc-2.31.tar.gz
cd glibc-2.31/
# 查看安装需要的条件
cat INSTALL | grep -E "newer|later"
# 创建build目录,因为直接在当前目录下编译会报错
mkdir build
cd build
# 配置
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks --disable-werror
yum install python3
# 4线程编译
make -j4
# 如果这一步安装失败了,请参见下文
make install
# 安装本地化数据,其实不执行也可以
make localedata/install-locales
*报错configure: error:
These critical programs are missing or too old: make compiler xxx
Check the INSTALL file for required versions.
这是由于gcc版本或者python和make版本过低导致的
升级请参见这篇文章:
*make install
失败:
可能类似于这样的错误,反正如果这一步失败了,大概率你的命令都不能用了,这时候千万不要断开ssh连接,因为断了就再也连不上了。
/usr/local/glibc-2.29/build/iconv/iconvconfig: relocation error: /lib64/libc-2.17.so: symbol _dl_starting_up version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
make[2]: *** [Makefile:254: /usr/lib64/gconv/gconv-modules] Error 127
make[2]: Leaving directory '/usr/local/glibc-2.29/iconvdata'
make[1]: *** [Makefile:258: iconvdata/subdir_install] Error 2
make[1]: Leaving directory '/usr/local/glibc-2.29'
make: *** [Makefile:12:install] 错误 2
参见这篇文章来修复这个问题,系统恢复正常之后如果再次升级还是失败的话,请找别的方法来升级glibc
请问最终升级glibc的方案是什么?你成功了吗?