Linux升级C基本运行库CLIBC
在你准备升级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的更多相关文章
- Linux误删C基本运行库libc.so.6急救方法
首先普及一下关于libc.so.6的基本常识: libc.so.6是glibc的软链接 ll /lib64/libc.so.6lrwxrwxrwx 1 root root 11 Aug 27 201 ...
- Linux误删C基本运行库libc.so.6处理方法
1. libc.so.6介绍/usr/lib/libc.so.6是glibc的软链接,不同的平台可能路径会不一样.使用命令查看会看到: [root@farmer:~]$ls -l /lib/libc. ...
- 【linux】Linux误删C基本运行库libc.so.6急救方法
转自:http://www.cnblogs.com/fjping0606/p/4551475.html 下面全文都是拷贝的上面链接的内容. 首先普及一下关于libc.so.6的基本常识: libc.s ...
- linux指定动态运行库的位置
动态运行库在windows.linux下均广泛使用.windows下通常为dll文件,linux下为so文件.不过,对于部署程序,这两个系统查找依赖的运行库文件时却不一样.对于windows而言,优先 ...
- 如何查看Linux系统下程序运行时使用的库?
Linux系统下程序运行会实时的用到相关动态库,某些场景下,比如需要裁剪不必要的动态库时,就需要查看哪些动态库被用到了. 以运行VLC为例. VLC开始运行后,首先查看vlc的PID,比如这次查到的V ...
- linux中C的静态库和动态库分析
从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的.不过,现在我正在尝试一点一点的揭开它的面纱.现在,我尝试分析linux ...
- Linux升级glibc
参考http://www.linuxidc.com/Linux/2015-04/116472.htm via 红孩儿你好 一.简介 glibc是gnu发布的libc库,即c运行库.glibc是linu ...
- 升级_开阔视野之Oracle图形化升级(dbca建库后升级)—10.2.0.1.0升为10.2.0.5.0
***********************************************声明*************************************************** ...
- Windows 常用运行库下载 (DirectX、VC++、.Net Framework等)
经常听到有朋友抱怨他的电脑运行软件或者游戏时提示缺少什么 d3dx9_xx.dll 或 msvcp71.dll.msvcr71.dll又或者是 .Net Framework 初始化之类的错误而无法正常 ...
随机推荐
- jquery获取浏览器的高度和宽度
<script type="text/javascript"> $(document).ready(function() { alert($(window).heigh ...
- ubuntu 的远程桌面
好久没有弄ubuntu 丢人的啊,先安装了个服务器版,发现好多命令都忘记了,命令行下根本搞不懂 又安装了个桌面版...但是服务器远程么,putty还是搞的头大,又乱码,有各种文件传输. 还好记得以前用 ...
- Docker - 通过swarm 管理 docker service
创建一个 Docker service $ docker service create --replicas 1 --name myhelloworld alpine ping docker.com ...
- jQuery显示与隐藏返回顶层的箭头
<script type="text/javascript"> $(window).scroll(function(){ var d ...
- 搬瓦工搭建VPN
搬瓦工VPS的PPTP VPN搭建其实和上面都是很简单的,这个要用到上面的搬瓦工VPS控制面板. Root shell - advanced 下载 centos 6 一键安装包 wget --no-c ...
- 简单对比Spark和Storm
2013年参与开发了一个类似storm的自研系统, 2014年使用过spark 4个多月,对这两个系统都有一些了解. 下面是我关于这两个系统的简单对比: Spark: 1. 基于数据并行,https: ...
- 你以为PHP那么好自定义升级?
X,PHP如果只是安装操作系统之后,YUM INSTALL之后就可以使用最好啦. 但如果YUM安装的官方PHP版本太低怎么办? 据我所知,现在也只是到PHP5.3.3版本,如果APP应用需要PHP5. ...
- 14.2 InnoDB and the ACID Model
14.2 InnoDB and the ACID Model ACID 模型是一组数据库设计原则,强调可靠性方面对于商业数据和关键人物. MySQL 包含组件比如InnoDB存储引擎坚持ACID 模型 ...
- (2015年郑州轻工业学院ACM校赛题) E 汇编原理
此题属于比较麻烦的模拟题,比赛的时候是队友写的, 比赛结束之后自己也写了一遍,感觉对复杂模拟的掌控还是不行! 解析: 我感觉 ADD操作 和 MOV操作比较类似 所以就写在了一块,MUL操作单独写就行 ...
- SQL中游标的使用
一般情况下,我们用SELECT这些查询语句时,都是针对的一行记录而言,如果要在查询分析器中对多行记录(即记录集)进行读取操作时,则需要使用到游标或WHILE等循环 游标的类型: 1.静态游标(不检测 ...