触发场景
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


--------------------- 
来源:CSDN 
原文:https://blog.csdn.net/wkh___/article/details/84819564 

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐