原文:https://blog.csdn.net/heylun/article/details/78833050
<https://blog.csdn.net/heylun/article/details/78833050>

一、问题描述

最近在Centos6.5服务器上配置Android打包服务器,打包执行到aapt时遇到如下报错: 
aapt: /lib64/libc.so.6: version `GLIBC_2.14’ not found (required by aapt)

从上面报错可以看出,程序运行时候,没有找到“GLIBC_2.14”这个版本库,而默认的Centos6.9 glibc版本最高为2.12,
所以需要更新系统glibc库。


glibc是gnu发布的libc库,即c运行库,glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

很多linux的基本命令,比如cp, rm,
ll,ln等,都得依赖于它,如果操作错误或者升级失败会导致系统命令不能使用,严重的造成系统退出后无法重新进入,所以操作时候需要慎重。 

二、查看系统版本和glibc库版本

我们可以使用命令查看Linux系统版本和glibc库版本
# cat /etc/redhat-release CentOS release 6.5 (Final) # 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
由上面的信息可以看出系统是CentOS 6.5,最高支持glibc的版本为2.12,而Android打包使用的aapt需要2.14版本,所以需要升级。

三、下载GCC2.14编译并升级

 
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 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
glibc-2.14.tar.gz是gcc 2.14源码,glibc-ports-2.14.tar.gz包括gcc 2.14所有补丁源码。

如果执行以上命令完成不报错的话,查看库文件,发现/lib64/libc.so.6软链接指向了2.14版本
# ll /lib64/libc.so.6 /lib64/libc.so.6 -> /lib64/libc-2.14.so
四、确认glibc版本升级成功
# 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
可以看到glibc支持的版本已经到2.14。至此,我们再次进行Andnroid打包执行程序aapt就不会再报"libc.so.6: version
GLIBC_2.14 not found"的错误了。

结束!