1. 程式人生 > >/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 解決辦法

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 解決辦法

今天在自己的Ubuntu 12.04(64位)系統上安裝了一個QT_Creator 4.3.1,安裝完畢之後選擇立即執行,點選下去沒有任何反應,我以為沒點到,於是再點一次,還是沒有任何反應。於是我估計應該是缺少什麼庫導致QT執行不起來,於是切換到命令列再次執行,這下看到了,系統給出的提示是:

leon@Ubuntu:~/qtcreator-4.3.1/bin$ ./qtcreator
./qtcreator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found (required by /home/leon/qtcreator-4.3.1/bin/../lib/Qt/lib/libQt5Core.so.5)

原來是glibc這個傢伙在搞鬼。看這個提示其實很簡單,就是說我的系統中缺少glibc_2.17這個工具。好吧,為了保險,確認一下我的系統中是否真的缺少這個工具:

leon@Ubuntu:~$ strings  /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_
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_PRIVATE

看來還真是,我最新的版本也才2.15,而QT需要的是2.17。那麼, 乖乖的去安裝吧。

這裡寫圖片描述

找到2.17的版本。下載完後,解壓,進入目錄,編譯,安裝:

leon@Ubuntu:~$ tar xzvf glibc-2.17.tar.gz
leon@Ubuntu:~$ cd glibc-2.17/
leon@Ubuntu:~/glibc-2.17$ ./configure
checking build system type... x86_64-unknown-linux
-gnu checking host system type... x86_64-unknown-linux-gnu checking for gcc... gcc checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking for readelf... readelf configure: error: you must configure in a separate build directory

可以看到,系統給出了一個錯誤提示,說必須在另外一個獨立的目錄下執行configure命令。於是:

leon@Ubuntu:~/glibc-2.17$ mkdir build
leon@Ubuntu:~/glibc-2.17$ cd build
leon@Ubuntu:~/glibc-2.17/build$ ../configure --prefix=/opt/glibc-2.17

注意:這裡的“–prefix=/opt/glibc-2.17”的作用是指定glibc的安裝目錄到opt目錄下,目的是防止本次安裝的glibc與系統中原來存在的其他版本衝突或者干擾。但是,這樣安裝之後,必須將該目錄手動新增到系統的環境變數中去,否則其他程式將無法引用。

這下子可以走下去了。但是,好景不長,一會的工夫,又給出了一個錯誤提示:

......
checking for gmsgfmt... no
checking for msgfmt... msgfmt
checking version of msgfmt... 0.18.1, ok
checking for makeinfo... no
checking for sed... sed
checking version of sed... 4.2.1, ok
checking for gawk... no
checking for nm... nm
configure: error: 
*** These critical programs are missing or too old: gawk
*** Check the INSTALL file for required versions.

原來是缺少gawk工具。百度一下,發現這也是一個很常用的工具,我係統中的版本太舊了,無法滿足它的要求。於是,再次向度娘需求幫助。找到gawk的官網進行下載(http://ftp.gnu.org/gnu/gawk/)。開啟網頁可以看到如下佇列:

這裡寫圖片描述

找一個你認為合適的版本下載吧。我本人選的4.1.4的版本。

下載完後,解壓,進入目錄,編譯,安裝:

leon@Ubuntu:~$ cp /mnt/share/tmp/gawk-4.1.4.tar.gz gawk-4.1.4.tar.gz
leon@Ubuntu:~$ tar xvzf gawk-4.1.4.tar.gz
leon@Ubuntu:~$ cd gawk-4.1.4/
leon@Ubuntu:~/gawk-4.1.4$ ./configure
leon@Ubuntu:~/gawk-4.1.4$ make
leon@Ubuntu:~/gawk-4.1.4$ sudo make install

一路順暢,等待安裝完畢之後。再回到glibc的目錄下,重新執行configure的命令。這下成功了。然後順序執行make和make install,直到全部完成。

題後話:

上文中介紹的方法,其實只是完成了對新版本glibc工具的安裝,但是,裝完並不代表能用,系統中可用的glibc環境仍然沒有發生變化(因為系統的glibc環境比較棘手,我不敢去私自修改)。所以,qt還是無法啟動。因此,我自己倒騰的最後結果,還是沒能把qt安裝成功。不過,暫時的失敗並不代表完全沒有辦法,我決定先將這個過程記錄在此,日後若有機會,再過來慢慢研究。

當然,若是各位看官有興趣,大可以去百度一下,如何去修改系統的glibc環境,因為,畢竟還是有不少高人動手修改成功了。當然,這是冒著系統崩潰的風險來操作的。所以,各位量力而行吧~~~