史上最强、最全、最管用的【glibc安装手册】

本文档适用于安装glibc-2.14及以上版本的安装。

  1. 下载安装文件
    安装文件都在官网http://ftp.gnu.org/gnu/glibc/ 这里可以找到你想要的版本,可自行下载,示例:wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 
  2. 安装检查
    为了防止安装不可用,导致系统奔溃,建议先做机器检查,备份相关数据。
    运行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

  3. 安装命令
    由于这个命令非常底层,是C语言的运行库,因此需要用root来安装。
    1. 下载完压缩包之后,解压压缩包: tar xfz glibc-2.17.tar.gz
    2. 进入目录: cd glibc-2.17
    3. 创建build目录并进入该目录: mkdir -p build; cd build
    4. 运行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打开该文件,自行查看源码。
    5. 运行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版本不高,可自行检查相关的版本。
    6. 运行安装命令: make install
       
  4. 检查安装
    1. 如果安装成功,那么运行ls命令,应该能直接显示该目录下的文件,如果有报错,类似“ls: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument”,这就说明有错误了,安装失败。可使用步骤1的恢复命令,进行恢复。一旦安装失败,请不要断开ssh,否则再也无法登录进去了。
    2. 检查版本是否正确,运行命令: 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即表示安装成功了。

参考资料

https://my.oschina.net/yuzhenhao/blog/506082

https://cnodejs.org/topic/56dc21f1502596633dc2c3dc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章