1. 程式人生 > >Linux 解決報錯"libc.so.6: version GLIBC_2.14 not found"

Linux 解決報錯"libc.so.6: version GLIBC_2.14 not found"

觸發場景

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

搞定咯!