0x00:前言

glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。
本文将通过编译安装较新版本的glibc库以达到解决由于glibc库版本较老而导致的一系列问题。

通过本文操作,你将解决以下问题:

  1. version `GLIBC_X.XX' not found

0x01:前期准备

  • 安装环境
# CentOS/RedHat
yum install mlocate gcc gcc-c++ kernel-devel wget
# 更新locate库
updatedb

# Ubuntu/Debian
apt install mlocate build-essential wget bison
# 更新locate库
updatedb
  • 查看当前Linux现有的GLIBC包版本
    不同的系统存放libc.so.6位置不同,所以现在定位一下文件位置。
locate libc.so.6

存放位置
由图可知
Ubuntu的存放位置为【/lib/x86_64-linux-gnu/libc.so.6】
CentOS 6的存放位置为【/lib64/libc.so.6】
CentOS 7的存放位置为【/usr/lib64/libc.so.6】

# Ubuntu
strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC

# CentOS 6
strings /lib64/libc.so.6 |grep GLIBC

# CentOS 7
strings /usr/lib64/libc.so.6 |grep GLIBC

执行效果(此处以CentOS 6为例)
执行效果
此处可以看到,CentOS 6中的GLIBC库最高版本仅到2.12;若运行的软件需要2.12以上版本GLIBC就会报错。


0x02:下载GLIBC源码包并进行编译安装

  • 获取下载地址

首先从GNU官网上获取想要的GLIBC版本
http://www.gnu.org/software/libc/

此处,本文选用GLIBC 2.20的版本

  • 下载GLIBC_2.20源码包
cd /usr/src/  
wget http://mirror.bjtu.edu.cn/gnu/libc/glibc-2.20.tar.gz
  • 解压
tar zxvf glibc-2.31.tar.gz
mkdir build  
cd build
  • 编译安装
../glibc-2.20/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

configure

make -j4
make install

0x03:检查安装情况

  • 验证是否安装成
# CentOS 6
strings /lib64/libc.so.6 |grep GLIBC

安装完成

Last modification:March 12th, 2020 at 03:36 pm
If you think my article is useful to you, please feel free to appreciate