glibc升级到指定版本
一、环境准备
1.1 升级GCC编译器
glibc编译需要较高版本的GCC支持,系统默认的GCC 4.8版本无法满足新版本glibc的编译需求。
# 安装CentOS软件集仓库
yum -y install centos-release-scl# 安装GCC 11开发工具集
yum -y install devtoolset-11 bison ca-certificates# 启用GCC 11环境
scl enable devtoolset-11 bash# 验证GCC版本
gcc --version
1.2 编译安装高版本Make
Make工具在编译过程中至关重要,需要确保版本满足要求。
# 进入源码目录
cd /usr/local/src/# 下载Make 4.3源码
wget https://ftp.gnu.org/gnu/make/make-4.3.tar.gz# 解压并编译安装
tar zxvf make-4.3.tar.gz && cd make-4.3
./configure && make -j && make install# 创建软链接
ln -s -f /usr/local/bin/make /usr/bin/make# 验证安装
make -v
1.3 安装Python 3
新版本glibc编译过程中需要Python 3支持。
# 进入源码目录
cd /usr/local/src/# 下载Python 3.10.2源码
wget https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tar.xz# 解压并编译安装
tar xvf Python-3.10.2.tar.xz && cd Python-3.10.2
./configure && make -j && make install# 验证安装
python3 -V
二、glibc安装与升级
2.1 检查当前glibc版本
在安装新版本前,先确认系统当前的glibc版本:
# 方法一:使用ldd命令
ldd --version# 方法二:查看libc库信息
strings /lib64/libc.so.6 | grep ^GLIBC# 方法三:查看软链接
ls -l /lib64/libc.so.6
2.2 编译安装glibc 2.33
以下以glibc 2.33为例,展示完整的编译安装流程:
# 进入源码目录
cd /usr/local/src/# 下载glibc 2.33源码
wget https://ftp.gnu.org/gnu/libc/glibc-2.33.tar.xz# 解压并创建编译目录
tar -Jxvf glibc-2.33.tar.xz && mkdir glibc-2.33/build && cd glibc-2.33/build# 清理库路径环境变量
LD_LIBRARY_PATH=''# 配置编译选项(二选一)
# 基础配置
../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --build=x86_64-redhat-linux --enable-kernel=3.10.0 --without-gd --disable-profile# 或包含SELinux支持
../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --build=x86_64-redhat-linux --enable-kernel=3.10.0 --without-gd --disable-profile --with-selinux# 编译安装
make -j && sed -i '128i\ && $name ne "nss_test2"' ../scripts/test-installation.pl && make install# 安装本地化数据
make -j localedata/install-locales# 重启cron服务
service crond restart
2.3 安装glibc 2.28(备选方案)
如果需要安装glibc 2.28版本,可按以下步骤操作:
# 安装必要依赖
yum install -y bison# 进入源码目录
cd /usr/src/# 下载并解压glibc 2.28
wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar -xzf 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# 并行编译(4线程)
make -j 4# 安装(可能出现警告但不影响安装)
make install
三、版本验证与检查
3.1 验证glibc安装
安装完成后,通过以下命令验证安装结果:
# 查看glibc版本
ldd --version# 检查支持的GLIBC版本
strings /lib64/libc.so.6 | grep GLIBC# 预期输出示例:
# GLIBC_2.2.5
# GLIBC_2.2.6
# ...
# GLIBC_2.32
# GLIBC_2.33
# GLIBC_PRIVATE
3.2 检查C++库支持版本
# 查看支持的GLIBCXX版本
strings /lib64/libstdc++.so.6 | grep GLIBCXX
四、常见问题解决方案
4.1 缺少GLIBC版本错误
当运行程序时出现类似GLIBC_2.18' not found
错误时,需要安装对应版本的glibc。
# 下载glibc 2.30(包含2.18支持)
curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.30.tar.gz
tar zxf glibc-2.30.tar.gz
cd glibc-2.30/# 创建编译目录
mkdir build
cd build/# 配置并编译
../configure --prefix=/usr
make -j4
make install
4.2 缺少libstdc++支持
某些程序需要更高版本的libstdc++库:
# 安装GTK开发库
yum install -y libgtk*# 下载高版本libstdc++
wget http://ftp.de.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.3.0-6_amd64.deb# 解压deb包
ar -x libstdc++6_8.3.0-6_amd64.deb
tar -xvf data.tar.xz# 复制库文件
cp usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 /usr/lib64/# 查找现有libstdc++文件
find / -name "libstdc++*"# 更新软链接
ln -sf /usr/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6
4.3 编译错误处理
问题1:编译器或Make版本过低
These critical programs are missing or too old: make compiler
解决方案:按照本文第一部分升级GCC和Make版本。
问题2:安装脚本警告
Btw. the script doesn't work if you're installing GNU libc not as your
解决方案:此警告不影响实际安装,可忽略并继续执行make install
。