Linux 解決報錯"libc.so.6: version GLIBC_2.14 not found"
阿新 • • 發佈:2018-12-10
觸發場景
java服務端解析apk裝了apktool之後仍無法讀取,看一下log發現"libc.so.6: version GLIBC_2.14 not found"
報錯原因
檢視伺服器支援的glibc得知這臺伺服器最高支援2.12的,而我裝的apktool這個版本需要的是2.14版本的。
glibc是啥?
glibc是gnu釋出的libc庫,即c執行庫,glibc是linux系統中最底層的api,幾乎其它任何執行庫都會依賴於glibc。glibc除了封裝linux作業系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。
很多linux的基本命令,比如cp, rm, ll,ln等,都得依賴於它,如果操作錯誤或者升級失敗會導致系統命令不能使用,嚴重的造成系統退出後無法重新進入,所以操作時候需要慎重。
解決辦法(升級glibc)
檢視伺服器執行的glibc版本
[[email protected] ~]# strings /lib64/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_PRIVATE
由上可知:最高支援的是2.12版本。
下載glibc
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.gz
解壓
tar -xvf glibc-2.14.tar.gz
tar -xvf glibc-ports-2.14.tar.gz
編譯(make較費時,耐心等待)
mv glibc-ports-2.14 glibc-2.14/ports mkdir glibc-2.14/build cd glibc-2.14/build ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin make
安裝
make install
檢視軟連結指向
[[email protected] build]# ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 12 Dec 5 10:08 /lib64/libc.so.6 -> libc-2.14.so
由上可見/lib64/libc.so.6軟連結已經指向libc2.14版本
再次檢視伺服器支援的glibc版本
[[email protected] /]# strings /lib64/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_PRIVATE
搞定咯!