Centos运行程序时出现lib64libm.so.6 versionGLIBC_2.29' not found`解决方案(升级Glibc)

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版本过低导致的

升级请参见这篇文章:

Centos升级GCC和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

Centos升级Glibc导致系统崩溃的解决方法

评论区
头像
    头像
    xiao
      

    请问最终升级glibc的方案是什么?你成功了吗?

文章目录