在你准备升级GLIBC库之前,你要好好思考一下,

你真的要升级GLIBC么?

你知道你自己在做什么么?

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

总的来说,不说运行在linux上的一些应用,或者你之前部署过的产品,就是很多linux的基本命令,比如cp, rm, ls, mv, ssh, scp之类,命令都得依赖于它

网上很多人有惨痛教训,升级失败后系统绝大部分命令无法运行,系统退出后无法重新进入。。。。。。

对于CentOS这样的系统,为了追求稳定性(这个值得商榷)往往各种库版本都很低,比如6.5甚至7.0自带的还是glibc2.12, 而ubuntu 14.04带glibc2.19

我遇到问题的系统是CentOS 5.9,通过查看发现系统自带的GLIBC版本是2.5,而开发的程序运行需要GLIBC版本达到2.11,因此就得手动升级GLIBC。

第一次首先是下载GLIBC_2.12编译安装,但是安装报错,于是再尝试下载GLIBC_2.11编译安装,还是继续报错,通过查找资料得到结果应该是系统版本太低,不支持安装太高版本的GLIBC,于是下载GLIBC_2.10的编译安装,结果成功了,但是无法满足程序要求的GLIBC版本达到2.11,有两个解决方法:修改程序代码要求GLIBC版本达到2.10即可运行;更换更高版本的CentOS系统,推荐6.3以上的,自带的GLIBC都是2.12的了。

首先查看先有的情况,在CentOS5.9下

[root@localhost ~]# ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 11 Aug 27 2014 /lib64/libc.so.6 -> libc-2.5.so
[root@localhost ~]# 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_PRIVATE

libc.so.6是一个软连接,当前的glibc是2.5版本,开发的程序问题是GLIBC_2.7和GLIBC_2.11找不到的问题,所以需至少升级到2.11,前面说了,2.11安装失败,于是安装2.10吧

对于低版本glibc,还有glibc-linuxthreads-2.x需要编译,可参考很多网上文档,但2.10没有,所以不用了

[root@localhost ~]# wget http://ftp.gnu.org/gnu/glibc/glibc-2.10.1.tar.gz

[root@localhost ~]# wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.10.1.tar.gz

[root@localhost ~]# tar -xvf glibc-2.10.1.tar.gz

[root@localhost ~]# tar -xvf glibc-ports-2.10.1.tar.gz

[root@localhost ~]# mv glibc-ports-2.10.1 glibc-2.10.1/ports

[root@localhost ~]# mkdir glibc-build-2.10.1

[root@localhost ~]# cd glibc-build-2.10.1

[root@localhost ~]# ../glibc-2.10.1/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

[root@localhost ~]# make

[root@localhost ~]# make install

如果提示install成功,去看glibc所在的共享库:

[root@localhost ~]# ll /lib64/libc*
可以看到2.5的旧库文件还在,多了2.10版本的库文件,而且软链接文件全部指向了2.10版本。

-rwxr-xr-x 1 root root 8313772 Jun 4 12:10   /lib64/libc-2.10.1.so
-rwxr-xr-x 1 root root 1720712 Jan 28 01:33  /lib64/libc-2.5.so
lrwxrwxrwx 1 root root 14 May 25 15:02        /lib64/libcap.so.1 -> libcap.so.1.10
-rwxr-xr-x 1 root root 17384 Mar 15 2007      /lib64/libcap.so.1.10
-rwxr-xr-x 1 root root 197744 Jan 28 01:33   /lib64/libcidn-2.5.so
lrwxrwxrwx 1 root root 14 Jun 2 14:31           /lib64/libcidn.so.1 -> libcidn-2.5.so
lrwxrwxrwx 1 root root 17 May 26 15:40       /lib64/libcom_err.so.2 -> libcom_err.so.2.1
-rwxr-xr-x 1 root root 10096 Sep 18 2014      /lib64/libcom_err.so.2.1
-rwxr-xr-x 1 root root 109360 Jun 4 12:10          /lib64/libcrypt-2.10.1.so
-rwxr-xr-x 1 root root 45728 Jan 28 01:33          /lib64/libcrypt-2.5.so
-rwxr-xr-x 1 root root 1369312 May 13 04:58    /lib64/libcrypto.so.0.9.8e
lrwxrwxrwx 1 root root 19 May 26 15:40          /lib64/libcrypto.so.6 -> libcrypto.so.0.9.8e
lrwxrwxrwx 1 root root 18 Jun 4 12:10             /lib64/libcrypt.so.1 -> libcrypt-2.10.1.so
lrwxrwxrwx 1 root root 14 Jun 4 12:10             /lib64/libc.so.6 -> libc-2.10.1.so

[root@localhost ~]# 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_PRIVATE

到这里就成功更新了GLIBC,需要注意的是整个安装编译过程时间比较长,需要耐心等候。

Linux升级C基本运行库CLIBC的更多相关文章

  1. Linux误删C基本运行库libc.so.6急救方法

    首先普及一下关于libc.so.6的基本常识: libc.so.6是glibc的软链接 ll  /lib64/libc.so.6lrwxrwxrwx 1 root root 11 Aug 27 201 ...

  2. Linux误删C基本运行库libc.so.6处理方法

    1. libc.so.6介绍/usr/lib/libc.so.6是glibc的软链接,不同的平台可能路径会不一样.使用命令查看会看到: [root@farmer:~]$ls -l /lib/libc. ...

  3. 【linux】Linux误删C基本运行库libc.so.6急救方法

    转自:http://www.cnblogs.com/fjping0606/p/4551475.html 下面全文都是拷贝的上面链接的内容. 首先普及一下关于libc.so.6的基本常识: libc.s ...

  4. linux指定动态运行库的位置

    动态运行库在windows.linux下均广泛使用.windows下通常为dll文件,linux下为so文件.不过,对于部署程序,这两个系统查找依赖的运行库文件时却不一样.对于windows而言,优先 ...

  5. 如何查看Linux系统下程序运行时使用的库?

    Linux系统下程序运行会实时的用到相关动态库,某些场景下,比如需要裁剪不必要的动态库时,就需要查看哪些动态库被用到了. 以运行VLC为例. VLC开始运行后,首先查看vlc的PID,比如这次查到的V ...

  6. linux中C的静态库和动态库分析

    从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的.不过,现在我正在尝试一点一点的揭开它的面纱.现在,我尝试分析linux ...

  7. Linux升级glibc

    参考http://www.linuxidc.com/Linux/2015-04/116472.htm via 红孩儿你好 一.简介 glibc是gnu发布的libc库,即c运行库.glibc是linu ...

  8. 升级_开阔视野之Oracle图形化升级(dbca建库后升级)—10.2.0.1.0升为10.2.0.5.0

    ***********************************************声明*************************************************** ...

  9. Windows 常用运行库下载 (DirectX、VC++、.Net Framework等)

    经常听到有朋友抱怨他的电脑运行软件或者游戏时提示缺少什么 d3dx9_xx.dll 或 msvcp71.dll.msvcr71.dll又或者是 .Net Framework 初始化之类的错误而无法正常 ...

随机推荐

  1. DCI

    理论: 某个data,在一个特定的场景中,以某个角色role,来与该场景中的其他角色进行交互.这个过程要以代码的方式表达出来,他要求data本身不具备交互行为, 有交互行为的是角色,当一个data没有 ...

  2. C# 取小数点

    1.Math.Round(0.333333,2);//按照四舍五入的国际标准2. double dbdata=0.335333; string str1=String.Format("{0: ...

  3. codeforces 232D Fence

    John Doe has a crooked fence, consisting of n rectangular planks, lined up from the left to the righ ...

  4. python——os模块操作文件

  5. Scut 进阶:Schema 自动检测

    Scut 在启动时有一个自动根据代码中数据类型检查数据库字段的功能,要如何使用呢? 脚本引擎动态加载 ModelAssembly: ScriptEngine.cs - InitScriptRuntim ...

  6. 转:Backbone与Angular的比较

    原文来自于:http://www.infoq.com/cn/articles/backbone-vs-angular 将不同的思想和工具进行对比,是一种更好地理解它们的方式.在本文中,我首先将列举在创 ...

  7. 【JavaScript】关于JavaScript

    1. Language 2. DOM 3. Library 4. Framework

  8. 单片机C语言编程规范

    一.基本要求 1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行. 1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序. 1.3 尽量使用标准库函数和公共函数. 1.4 不要 ...

  9. HDOJ(HDU) 2091 空心三角形

    Problem Description 把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果.在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出 ...

  10. MVC路由机制

      按照传统,在很多Web框架中(如经典的ASP.JSP.PHP.ASP.NET等之类的框架),URL代表的是磁盘上的物理文件.例如,当看到请求http://example.com/albums/li ...