0. 概述

在 CentOS 中,经常我们运行一些软件(尤其是重新自己编译过 GCC 之后)会出现因为 GLIBC 版本问题无法运行的情况,于是乎就需要自行编译解决,本文就提供一个示例如何编译解决。

libc,全称为 C 标准库 (Standard C Library),是一个在 UNIX、Linux、BSD、Mac OS X 等 POSIX 系统上为开发者提供核心应用程序接口 (API) 的开源库。这个库提供了很多基本的接口,比如 I/O 处理、字符串操作、内存分配等,而且几乎所有的应用程序和系统都依赖于它。如果你替换 libc,新的库文件可能会和你的系统、应用程序或其他库不兼容。

升级 libc 是高级操作,如果你对 Linux 系统不熟悉,请放弃升级,关闭这篇文章。
升级 libc 是高级操作,如果你对 Linux 系统不熟悉,请放弃升级,关闭这篇文章。
升级 libc 是高级操作,如果你对 Linux 系统不熟悉,请放弃升级,关闭这篇文章。

1. 问题确认

如果想确认一下自己的环境是否真的没有这个 GLIBC 版本,那么可以这么看一下:

  1. [root@liqiang.io]# strings /usr/lib64/libc.so.6 | grep GLIBC_2.1
  2. GLIBC_2.10
  3. GLIBC_2.11
  4. GLIBC_2.12
  5. GLIBC_2.13
  6. GLIBC_2.14
  7. GLIBC_2.15
  8. GLIBC_2.16
  9. ... ...

如果自己重新编译了 GLIBC 但是还没有的话,那需要自行设置一下加载目录:

  1. [root@liqiang.io]# export LD_LIBRARY_PATH=/opt/glibc-2.18/lib
  2. [root@liqiang.io]# strings /usr/lib64/libc.so.6 | grep GLIBC_2.1

2. 下载源码

如果需要自行编译安装的话,那么肯定源码还是要下载的:

  1. [root@liqiang.io]# wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.18.tar.gz

3. 编译安装

编译安装就是常见的几步走了:

  1. [root@liqiang.io]# tar -zxvf glibc-2.18.tar.gz
  2. [root@liqiang.io]# cd glibc-2.18
  3. [root@liqiang.io]# mkdir build && cd build
  4. [root@liqiang.io]# ../configure --prefix=/opt/glibc-2.18
  5. [root@liqiang.io]# make -j4 && make install

4. 验证效果

最后就是验证一下是否已经正确安装了。

  1. [root@liqiang.io]# export GLIBC_PATH=/opt/glibc-2.18/lib
  2. [root@liqiang.io]# strings /usr/lib64/libc.so.6 | grep GLIBC_2.18
  3. GLIBC_2.18
  4. GLIBC_2.18

5. 错误救援

  1. [root@liqiang.io]# export LD_LIBRARY_PATH=/usr/lib64
  2. [root@liqiang.io]# strings /opt/glibc-2.18/lib/libc.so.6 | grep GLIBC_2.18
  3. GLIBC_2.18
  4. GLIBC_2.18

有同学喷按照我上面的操作之后,整个终端都出错了(我要强调一下,我的以上操作只会影响当前的终端,并且是可恢复的),不会影响系统重启或者新的登陆终端,以下是我的操作过程截图:

图 1:操作失误救援

6. Ref