需要的查看'GLIBC_2.14',先查看一下当前系统glibc的情况
strings /lib64/libc.so.6 |grep GLIBC
[root@localhost build]# strings /lib64/libc.so.6 |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE
好吧,确实没有,那简单粗暴,安装一下。
1. glibc下载
从http://www.gnu.org/software/libc/ 下载源代码。我下载的版本是2.14,链接地址是http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz。
2. 安装
因为glibc库使用广泛,为了避免污染当前系统环境,最好自定义安装目录,使用时定义一下环境变量就行了。具体步骤如下:
[root@localhost ~]# tar xvf glibc-2.14.tar.gz
[root@localhost ~]# cd glibc-2.14
[root@localhost glibc-2.14]# mkdir build
[root@localhost glibc-2.14]# cd ./build
[root@localhost build]# ../configure --prefix=/opt/glibc-2.14
[root@localhost build]# make -j4
[root@localhost build]# make install
1.设置环境变量 export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
2.查看libc版本 getconf -a |grep glibc -i 查看glibc版本
3.看看现在libc.so.6在哪个位置,然后修改软链接 ln -sf /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
4.检查GLIBC2.14是否安装成功
strings /lib64/libc.so.6 | grep GLIBC 列表中有GLIBC_2.14表示安装成功。
5.注意:
libc.so.6 是c运行时库 glibc的软链接,而系统几乎所有程序都依赖c运行时库。程序启动和运行时,是根据libc.so.6 软链接找到glibc库。删除libc.so.6将导致系统的几乎所有程序不能工作。
每个glibc.so文件有它支持的libc版本,可以通过# strings /lib64/libc.so.6 |grep GLIBC_ 查看。如果程序编译的时候链接的libc库版本不在程序运行环境下的glibc库支持的libc版本之内,也会报错.
于是,系统的所有命令 ls,cp,cd 等等都无法使用了。
glibc软链
安装完成后, 建立软链指向glibc-2.14, 执行如下命令:
1 2 | $ rm -rf /lib64/libc.so.6 // 先删除先前的libc.so.6软链 $ ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6 |
注意
删除libc.so.6
之后可能导致系统命令不可用的情况, 可使用如下方法解决:
1 | $ LD_PRELOAD=/opt/glibc-2.14/lib/libc-2.14.so ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6 |
如果上述更新失败可使用如下命令还原:
1 | $ LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6 // libc-2.12.so 此项是系统升级前的版本 |
此时查看系统glibc版本如下图所示:
可以看到当前glibc最高版本为2.14, libc.so.6软链指向如下图所示: