1. 程式人生 > >升級glibc-2.12到glibc-2.15的正確方式

升級glibc-2.12到glibc-2.15的正確方式

很有必要先說下注意事項:

1. 嚴重宣告大家在升級glibc時一定要特別特別特別的謹慎和小心,除非確定升級的必要,否則不要隨意升級glibc,因為會帶來很大的麻煩。

2. 金牛座是在升級glibc後【姿勢基本正確,但是這是不夠的】,經過各種折騰,最後把系統玩死了【好在是虛擬機器】,經過血的教訓【不過,折騰有折騰的好,學到了很多LINUX動態庫的有趣玩法,比如 pathelf 這個神器】,金牛座通過完全重灌系統,梳理出了升級glibc的正確正確姿勢,並分享給大家以防走彎路,請大家務必按嚴格按照本文的指令效仿操作。

3. 很多人任性的升級glbc之後,普遍都會遇到一個類似問題就是:"......誤刪了/lib64/libc.so.6......",然後一番折騰雖然也能解決問題,但是事實上裡面的痛苦誰折騰誰知道,根本原因就是安裝姿勢不正確,那麼要是誤刪了怎麼辦,請自行google關鍵字【LD_PRELOAD】,它可以幫你起死回生。

4. 不要在 glibc原始碼包裡直接執行 ./configure 指令,否則你就等著被KO吧,假如安裝包位置是: /path/to/glibc-2.15,正確的姿勢是:

 
  1. mkdir -pv /path/to/glibc-2.15/build
  2. cd /path/to/glibc-2.15/build
  3. ../configure 引數1.... 引數2 ... 引數3...

5. 不要將 glibc 安裝到預設的目錄【/usr/local】或者 【任何自定義的目錄】,請務必安裝到【/usr】目錄,否則你就等著被OK吧。

6. 最後建議大家每安裝一個軟體包,都要仔細閱讀下原始碼包裡的 README 以及 INSTALL 文件,很重要不解釋。

再說下為什麼要升級glibc:

OK,那金牛座為啥要升級glibc呢?因為我正在進行 React Native 開發時專案所依賴的包需要更高版本的glibc庫支援, 而Centos6.5 中glibc預設版本為2.12, 比如除錯時可能會遇到報錯:

 
  1. adb: /lib64/libc.so.6: version GLIBC_2.14 not found(required by adb)
  2. adb: /lib64/libc.so.6: version GLIBC_2.15 not found(required by adb)

這兩行報錯意味著我們需要對glibc進行升級了,自然是升級到 glibc-2.15 這個高版本才對。

檢視系統預設的glibc版本:

 
  1. [[email protected] ~]# /lib64/libc.so.6
  2. GNU C Library stable release version 2.15, by Roland McGrath et al.
  3. Copyright (C) 2012 Free Software Foundation, Inc.
  4. This is free software; see the source for copying conditions.
  5. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
  6. PARTICULAR PURPOSE.
  7. Compiled by GNU CC version 4.4.7 20120313 (Red Hat 4.4.7-18).
  8. Compiled on a Linux 2.6.32 system on 2018-06-30.
  9. Available extensions:
  10. crypt add-on version 2.1 by Michael Glad and others
  11. GNU Libidn by Simon Josefsson
  12. Native POSIX Threads Library by Ulrich Drepper et al
  13. BIND-8.2.3-T5B
  14. libc ABIs: UNIQUE IFUNC
  15. For bug reporting instructions, please see:
  16. <http://www.gnu.org/software/libc/bugs.html>.

編譯安裝glibc-2.15:

 
  1. [[email protected] ~]# mkdir -pv /path/to/glibc-2.15/build
  2. [[email protected] ~]# cd /path/to/glibc-2.15/
  3. [[email protected] ~]# wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
  4. [[email protected] ~]# tar xzvf glibc-2.15.tar.gz
  5. [[email protected] ~]# cd /path/to/glibc-2.15/build
  6. [[email protected] ~]# ../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
  7. [[email protected] ~]# make
  8. [[email protected] ~]# make install

核查下更新後的glibc版本:

44.png

從截圖上我們可以看到2.12版本的舊庫檔案依然存在,而且還多了2.15版本的庫檔案,而且軟連結檔案全部指向了2.15版本。

再次核查下更新後的glibc版本:

44.png

原文出處:

http://www.blogdaren.com/post-2420.html?from=timeline