GLIBC升级

零、 Environment

CentOS7.9 x86_64 kvm
GLIBC 2.17 升级至 2.28

一、 准备工作

1.1 升级 GCC 12.3

  • 下载:
    wget --no-check-certificate https://mirrors.nju.edu.cn/gnu/gcc/gcc-12.3.0/gcc-12.3.0.tar.gz

  • 解压:
    tar -xzvf gcc-12.3.0.tar.gz

  • 安装依赖:
    yum install bzip2 gcc gcc-c++

  • 下载环境:
    /gcc-12.3.0/contrib/download_prerequisites

  • 编译安装:
    cd gcc-12.3.0
    mkdir build
    cd build
    ../configure -enable-checking=release -enable-language=c,c++ -disable-multilib
    make install

  • 参数解释:

    enable-languages     #表示你要让你的gcc支持那些语言
    disable-multilib #不生成编译为其他平台可执行代码的交叉编译器
    disable-checking #生成的编译器在编译过程中不做额外检查
    enable-checking=xxx #检查xx
  • 删除旧版 gcc:
    yum remove gcc g++

  • 链接新版 gcc (产出文件默认遵循FHS规范)
    ln -s /usr/local/bin/gcc /usr/bin/gcc

  • 验证新版 gcc

1.2 升级make

  • 下载:
    wget --no-check-certificate https://mirrors.nju.edu.cn/gnu/make/make-4.3.tar.gz

  • 解压:
    tar zxvf make-4.3.tar.gz

  • 编译安装(产出文件默认遵循FHS规范)
    cd make-4.3
    ./configure
    make -j4
    make install

  • 移除原来的make
    mv /usr/bin/make{,.back}

  • 链接新版本的make
    ln -s /usr/local/bin/make /usr/bin/make

  • 验证新版make

1.3 升级 GLIBC 2.8

  • 下载:
    wget --no-check-certificate https://mirrors.nju.edu.cn/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 --disable-sanity-checks --disable-werror

    make install

不要修改 --prefix=/usr

参数解释:

--prefix=/usr/local/GLIBC-2.8:
指定安装目录的前缀。在这里,指定了/usr/local/GLIBC-2.8,这意味着编译后的文件将被安装到该目录下。

--disable-profile:
禁用性能分析支持,通常是禁用生成程序的性能分析信息。

--enable-add-ons:
启用支持附加模块的功能。这通常用于启用一些额外的功能或插件。

--with-headers=/usr/include:
指定头文件的位置,这里设置为/usr/include,告诉配置脚本在这个目录中寻找头文件。

--with-binutils=/usr/bin:
指定binutils工具的位置,这里设置为/usr/bin。Binutils包含了一组用于处理二进制文件的工具,如汇编器、链接器等。

--disable-sanity-checks:
禁用一些编译时的检查,这可能会加快编译过程,但也可能导致生成的库不够稳定或不符合某些标准。

--disable-werror:
禁用将警告视为错误的选项。通常情况下,编译过程中遇到的警告会被视为错误,导致编译中断。此选项用于忽略这些警告,即使它们本来应该导致编译失败。

二、 相关报错

2.1 安装glibc-2.28时报LD_LIBRARY_PATH相关错误

错误详情:

l * LD_LIBRARY_PATH shouldn’t contain the current directory when
* building glibc. Please change theenvironment variable
* and run configure again.

解决:
echo $LD_LIBRARY_PATH
将输出的结果临时注释, 编译安装完成之后再取消注释

2.2 更新glibc-2.28后执行yum报错Error accessing file for config file:///etc/yum.conf

错误详情:

解决: 重新安装yum

  • 下载:
    wget http://yum.baseurl.org/download/3.4/yum-3.4.3.tar.gz

  • 解压:
    tar -zxvf yum-3.4.3.tar.gz

  • 安装:
    cd yum-3.4.3
    touch /etc/yum.conf