CentOS7.9 出现version `GLIBC_2.29' not found的解决过程

今天将验证码库升级了SkiaSharp最新版,部署到服务器上出现了version `GLIBC_2.29’ not found,网上找了很多教程,不确定哪个适合,最终实现了升级处理,现在把过程发出来。

1、使用strings命令查看当前glibc支持的版本

# 使用strings命令查看
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_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE

发现只能到2.17

执行ldd --version也会看到glibc版本是2.17

image

注意:

在操作之前一定要备份重要数据。

下面开始正式一步一步的进行升级。

一、查看当前内核版本

uname -r
3.10.0-1160.45.1.el7.x86_64

二、libc版本查看

rpm -q glibc
glibc-2.17-326.el7_9.3.x86_64
ldd --version
ldd (GNU libc) 2.17

三、配置环境版本

make -v
GNU Make 3.82
gcc -v
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

GCC版本要升级到至少7.3版本以上(可以看公众号其他文章),Make要4.2.1及以上。

# 安装依赖
sudo yum install -y gcc gcc-c++ wget tar bzip2
# 下载Make源码
wget https://ftp.gnu.org/gnu/make/make-4.4.tar.gz
# 解压
tar -xzvf make-4.4.tar.gz
cd make-4.4
# 配置
./configure
# 编译
make
# 安装
sudo make install
# 验证
make --version

四、Python版本

python3 -V
Python 3.8.13

如果Python没有安装的话可以按下面的方式安装

# 安装SCL仓库
sudo yum install -y centos-release-scl
# 安装Python 3
sudo yum install -y rh-python38
# 启用Python 临时生效
scl enable rh-python38 bash
# 启用Python 永久生效 在~/.bash_profile中增加内容。
# 只在 SCL Python 环境存在时才加载
if [ -f /opt/rh/rh-python38/enable ]; then    
    source /opt/rh/rh-python38/enable    
    export PATH=$PATH:/opt/rh/rh-python38/root/usr/bin
fi

添加后记得使用source ~/.bash_profile使配置生效,可以通过echo $PATH验证路径是否正确添加

五、bison安装

yum install -y bison

六、开始编译GLIBC源码并安装,此步要特别留意。

1、下载GLIBC源代码:

wget http://ftp.gnu.org/gnu/libc/glibc-2.32.tar.gz
tar xvf glibc-2.32.tar.gz
cd glibc-2.32
创建构建目录并进入:
mkdir build
cd build

2、配置构建(您可能需要指定不同的-prefix):

../configure --prefix=/usr

3、编译并测试(测试步骤非常重要,确保新的库不会破坏系统):

make -j$(nproc)
make check

如果make check有报错的情况,可以考虑执行下面的命令来确保安装了GLIBC所需的所有开发工具和库。make check有报错也有可能是gcc版本太低,要安装高版本的gcc。

sudo yum groupinstall "Development Tools"
sudo yum install glibc-devel

4、安装新的GLIBC(十分危险,如果出错可能会导致系统不可用):

sudo make install

5、查看是否安装成功

ldd --version

目前已成功在2台服务器上操作成功,但还是需要谨慎操作!