1. 程式人生 > >CentsOS系統glibc-2.12升級到glibc-2.14

CentsOS系統glibc-2.12升級到glibc-2.14

前提:有一個專案是給安卓生成apk包的服務,簡稱打包服務。因為測試機上centos預設的glibc版本是2.12,好多程式執行出錯,保障服務執行故進行升級

檢視系統glibc庫版本可用下面命令:

# strings /lib64/libc.so.6 |grep GLIBC

或者

# getconf -a |grep glibc -i

ldd命令也可以檢視:

# ldd --version

安裝glibc-2.14:

下載到任務目錄無所謂了,安裝到了/opt下面

  1. wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
  2. tar -xzvf glibc-2.14.tar.gz
  3. cd glibc-2.14
  4. mkdir build
  5. cd build
  6. ../configure --prefix=/opt/glibc-2.14
  7. make
  8. make install
  9. export LD_LIBRARY_PATH=/opt/glibc-2.14/lib

 執行make install時出現:

/data/library/glibc-2.14/build/elf/ldconfig: Can't open configuration file /opt/glibc-2.14/etc/ld.so.conf: No such file or directory

make[1]: Leaving directory `/data/library/glibc-2.14'

這個問題之前別人也出現了,解決方法是複製一份conf配置檔案,就OK了

# find / -name "ld.so.conf"

/etc/ld.so.cnf

# cp /etc/ld.so.conf /opt/glibc-2.14/etc/

 glibc軟鏈

安裝完成後還需要修改軟鏈,建立軟鏈指向glibc-2.14:

# rm -rf /lib64/libc.so.6

# ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

執行完rm命令,在執行第二個會報這個錯誤,瞬間就慌了,但是好在有方法,之前被人提供的方法我以為就是順序執行,結果得先執行

刪除libc.so.6之後導致系統命令不可用,可使用下方命令解決:

# LD_PRELOAD=/opt/glibc-2.14/lib/libc-2.14.so  ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

如果上述更新失敗可使用如下命令還原:

# LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6    // libc-2.12.so 此項是系統升級前的版本

再看就有了

 

但是ldd後還會顯示之前的,這個不知道是為何,等我在研究研究,問問大神