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版本

[root@skr1 ~]# 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

查看软链接指向

[root@skr1 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版本

[root@skr1 /]# 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

搞定咯!

 

 

 

 

 

你可能感兴趣的:(Linux)