zoukankan      html  css  js  c++  java
  • 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,需要注意的是整个安装编译过程时间比较长,需要耐心等候。

  • 相关阅读:
    CS229 6.4 Neurons Networks Autoencoders and Sparsity
    CS229 6.3 Neurons Networks Gradient Checking
    【Leetcode】【Easy】Min Stack
    【Leetcode】【Easy】Merge Sorted Array
    【Leetcode】【Easy】ZigZag Conversion
    【Leetcode】【Easy】Valid Palindrome
    【Leetcode】【Easy】Reverse Integer
    【Leetcode】【Easy】Palindrome Number
    【Leetcode】【Easy】Length of Last Word
    【Leetcode】【Easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/fjping0606/p/4551477.html
Copyright © 2011-2022 走看看