Centos6.5 升级glibc解决“libc.so.6: version GLIBC_2.14

研发发来邮件说线上有台服务器跑程序报错,信息如下:

/agent: /lib64/libc.so.6: version `GLIBC_2.14‘ not found (required by./agent)
从上面报错可以看出,程序运行时候,没有找到“GLIBC_2.14”这个版本库,而默认的Centos6.5 glibc版本最高为2.12, 所以需要更新系统glibc库

glibc是gnu发布的libc库,即c运行库,glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

很多linux的基本命令,比如cp, rm, ll,ln等,都得依赖于它,如果操作错误或者升级失败会导致系统命令不能使用,严重的造成系统退出后无法重新进入,所以操作时候需要慎重。

1.查看系统版本和glibc库版本

cat /etc/redhat-release

CentOS release 6.5 (Final)

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

由上面的信息可以看出系统是CentOS 6.5,最高支持glibc的版本为2.12,而研发程序要2.14版本,所以需要升级

2.下载软件并升级:

wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz

wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.gz

tar -xvf glibc-2.14.tar.gz

tar -xvf glibc-ports-2.14.tar.gz

mv glibc-ports-2.14 glibc-2.14/ports

mkdir glibc-build-2.14

cd glibc-build-2.14/

../glibc-2.14/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

make

注意:当make成功后,会在当前glibc-build-2.14目录下生成一个新的libc.so.6的软连接,指向的是本目录下的libc.so文件,如下所示:

ll glibc-build-2.14/libc.so.6

glibc-build-2.14/libc.so.6 -> libc.so

可以将上面的libc.so文件直接拷贝到/lib64下面改名为libc-2.14.so,删除原来的libc.so.6软连接,建立新的连接即可使用,但是此处有一个大坑,后面会介绍,此处还是按照正常流程安装。

继续完成后续的安装:

make install

以上完成不报错的话,查看库文件,发现/lib64/libc.so.6软链接指向了2.14版本

ll /lib64/libc.so.6

/lib64/libc.so.6 -> /lib64/libc-2.14.so

3.再次查看glibc支持的版本:

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_2.13
GLIBC_2.14
GLIBC_PRIVATE

可以看到glibc支持的版本已经到2.14,再次执行程序就不会报错了

其他知识点:
有些安装方法是编译时候指定的目录不是/usr,而是通过建立软链指向新的libc-2.14.so版本,在此过程中需要删除原来连接,建立新的软连接,但是此处有一个大坑,就是当你删除libc.so.6之后会导致系统命令不可用,如下在测试机中演示的错误过程:

rm -rf /lib64/libc.so.6

接下来当你建立新的软链接时候,会发现ln命令不能用了。

ln -s /lib64/libc-2.14.so /lib64/libc.so.6

ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

当出现上面的状况时候,可以使用以下方法解决(假设libc-2.14.so已经拷贝到/lib64/目录下):

LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so /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

“LD_PRELOAD”是一个环境变量,定义在程序运行前优先加载的动态链接库,本处作用就是在执行后面的ln命令时,指定使用的glibc库,这样命令就可以正常使用了。

原文地址:http://blog.51cto.com/12077732/2125618

时间: 2024-08-26 23:11:24

Centos6.5 升级glibc解决“libc.so.6: version GLIBC_2.14的相关文章

解决"libc.so.6: version `GLIBC_2.14' not found",系统的glibc版本太低

一.查看系统glibc支持的版本: strings /lib64/libc.so.6 |grep GLIBC_ 或 rpm -qa |grep glibc 二.下载 到http://www.gnu.org/software/libc/下载最新版本,我这里下载了glibc-2.14.tar.xz 这个版本 http://ftp.gnu.org/gnu/glibc/ 三.解压 这里解压到/var/VMdisks/glibc-2.14/ cd /var/VMdisks/glibc-2.14/ 在gli

解决"libc.so.6: version `GLIBC_2.14' not found"问题

试图运行程序,提示"libc.so.6: version `GLIBC_2.14' not found",原因是系统的glibc版本太低,软件编译时使用了较高版本的glibc引起的:问题Centos 自动更新glibc-2.14 2.查看系统glibc支持的版本: strings /lib64/libc.so.6 |grep GLIBC_ rpm -qa |grep glibc ------------------------------- 可以看到最高只支持2.12版本,所以考虑编译

CentOS 安装redis3.2.6 提醒"libc.so.6: version `GLIBC_2.14' not found"系统的glibc版本太低

CentOS 安装redis3.2.6 提醒"libc.so.6: version `GLIBC_2.14' not found"系统的glibc版本太低 [[email protected] bin]# ./redis-server ../etc/redis.conf   ###redis启动时报错 ./redis-server: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./redis-server)

CentOS 安装redis2.8.13 提醒"libc.so.6: version `GLIBC_2.14' not found"系统的glibc版本太低

以下在系统CentOS 6.3 x86_64上操作 1.试图运行程序,提示"libc.so.6: version `GLIBC_2.14' not found",原因是系统的glibc版本太低,软件编译时使用了较高版本的glibc引起的: [[email protected] src]$ ./redis-server ./redis-server: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./redis

解决 /lib64/libc.so.6: version `GLIBC_2.14' not found 的问题

本文 引自与 以下博文: http://stuart.blog.51cto.com/728677/1840205 遇到这样的问题,乍一看是缺少软件,然后查看发现已安装 只是版本不对,so  那就是版本问题了 就需要安装一下提示中所需要的的版本 鉴于glibc的官网 我这里十分延迟,打不开,之后借用 博文中的FTP链接下载软件包 下载安装: [[email protected] ~]# wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz [[em

libc.so.6: version 'GLIBC_2.14' not found报错提示的解决方案

线上一台服务器在执行leveldb程序的时候,报错:"libc.so.6: version `GLIBC_2.14' not found". 排查原因及解决方法如下: 1)产生原因是由于Linux系统的glibc版本太低,而软件编译时使用了较高版本的glibc引起的! 查看系统glibc支持的版本 [[email protected] ~]# strings /lib64/libc.so.6 |grep GLIBC_ GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3

/lib64/libc.so.6: version `GLIBC_2.14‘ not found

启动Mongod数据库报如下错误/ib64/libc.so.6: version `GLIBC_2.14' not found 原因:系统默认库版本是libc-2.12.so 解决办法,安装libc-2.14,然后把安装的libc2.14目录下的libc.so.6的软链接过去 软链接操作步骤rm -rf /lib64/libc.so.6export LD_LIBRARY_PATH=/usr/local/glibc-2.14/lib:$LD_LIBRARY_PATHln -s /usr/local

分享Centos6.5升级glibc过程

默认的Centos6.5 glibc版本最高为2.12, 而在进行Nodejs开发时项目所依赖的包往往需要更高版本的glibc库支持, 因此在不升级系统的前提下, 需要主动更新系统glibc库. 一般遇到错误libc.so.6: version GLIBC_2.14 not found时表示需要对glibc进行升级了. 解决方案可参照下面链接 1 https://cnodejs.org/topic/56dc21f1502596633dc2c3dc 原文地址:https://www.cnblogs

【问题】CentOS6.5系统"libc.so.6: version 'GLIBC_2.15' not found"解决方法

出现"libc.so.6: version 'GLIBC_2.15' not found"问题,是由于glibc版本过低,升级glibc即可. 由于CentOS系统RPM源目前glibc最高版本是2.12,所以只能采用源码升级 一.查看系统glibc支持的版本 strings /lib64/libc.so.6 |grep GLIBC#查看当前glibc版本ll /lib64/libc.so.6 lrwxrwxrwx. 1 root root 12 Oct  9  2014 /lib64