升级 glibc 解决 `GLIBC_2.28` not found (required by xxx)

默认的gcc版本是4.8.5,无法编译高版本的glibc 2.28,需要升级到gcc 8以上的版本

升级 gcc

1
2
3
4
5
6
yum -y install centos-release-scl
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils
scl enable devtoolset-8 bash
echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
查看是否升级成功
gcc --version

升级 make

注意:make 的版本高于4.4 会造成 glibc 编译时卡在这一行

make[2]: Entering directory '/root/glibc-2.28/stdio-common
所以安装 make 4.2 的版本即可

1
2
3
4
5
6
7
8
9
10
11
wget http://ftp.gnu.org/pub/gnu/make/make-4.2.tar.gz
tar -xzvf make-4.2.tar.gz
cd make-4.2/
mkdir build && cd build
../configure --prefix=/usr/
make
make install
# 删除旧的 make
rm /usr/bin/make
# 拷贝新的
cp make /usr/bin/

升级glibc

1
2
3
4
5
6
7
8
wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar -xzvf glibc-2.28.tar.gz
cd glibc-2.28
#创建编译临时目录
mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make
make install

查询是否升级成功:
strings /lib64/libc.so.6 | grep GLIBC