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下面
- wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
- tar -xzvf glibc-2.14.tar.gz
- cd glibc-2.14
- mkdir build
- cd build
- ../configure --prefix=/opt/glibc-2.14
- make
- make install
- 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後還會顯示之前的,這個不知道是為何,等我在研究研究,問問大神