下载安装文件 安装文件都在官网http://ftp.gnu.org/gnu/glibc/ 这里可以找到你想要的版本,可自行下载,示例:wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 安装检查 为了防止安装不可用,导致系统奔溃,建议先做机器检查,备份相关数据。 运行strings /lib64/libc.so.6 查看该so指向哪个版本。本人的so指向2.12, ll /lib64/libc.so.6 lrwxrwxrwx 1 root root 13 Mar 24 2015 /lib64/libc.so.6 -> libc-2.12.so
这样可以得到相关的恢复命令,请使用绝对路径: LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
安装命令 由于这个命令非常底层,是C语言的运行库,因此需要用root来安装。
下载完压缩包之后,解压压缩包: tar xfz glibc-2.17.tar.gz进入目录: cd glibc-2.17创建build目录并进入该目录: mkdir -p build; cd build运行configure命令: ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin 这里可能会遇到一个错误: These critical programs are missing or too old:make 这个错误的原因通常是因为make的版本太高了,可检查下make的版本是多少,如果太高了,需要安装一个低版本的make,继续安装。具体版本的要求,请参考../configure的代码,可用vim打开该文件,自行查看源码。运行make命令,如果想并行,可以指定-j,数量为机器的cpu核数,如4核,即make -j4,八核即make -j8 如果串行的话,就直接make 这里可能会遇到错误: dynamic-link.h: 161: elf_get_dynamic_info:Assertion `info[15] == ((void *)0)' failed 网上搜罗了一堆信息也没有确定的解决方案,我的解决办法是升级了gcc的版本到gcc 5.3,因为我自己的gcc版本不高,可自行检查相关的版本。运行安装命令: make install 检查安装
如果安装成功,那么运行ls命令,应该能直接显示该目录下的文件,如果有报错,类似“ls: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument”,这就说明有错误了,安装失败。可使用步骤1的恢复命令,进行恢复。一旦安装失败,请不要断开ssh,否则再也无法登录进去了。检查版本是否正确,运行命令: strings /lib64/libc.so.6 | grep GLIB strings /lib64/libc.so.6 | grep GLIB 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_2.13 GLIBC_2.14 GLIBC_2.15 GLIBC_2.16 GLIBC_2.17 GLIBC_PRIVATE
这里显示了2.17即表示安装成功了。