史上最強、最全、最管用的【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

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