0x01 问题来源

在升级Android Studio项目的SDK版本和Gradle时出现了一个错误:

/usr/local/share/adt-bundle-linux-x86_64-20140702/sdk/build-tools/25.0.3/aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/share/adt-bundle-linux-x86_64-20140702/sdk/build-tools/25.0.3/aapt)

/usr/local/share/adt-bundle-linux-x86_64-20140702/sdk/build-tools/25.0.3/aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/share/adt-bundle-linux-x86_64-20140702/sdk/build-tools/25.0.3/lib64/libc++.so)

从以上信息来看,是少了 glibc-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_PRIVATE

所以需要安装glibc-2.14

0x02 安装过程

先看下安装命令:

cd /opt
mkdir glibc 
cd glibc
mkdir glibc-2.14
cd /opt
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar -zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure profix=/opt/glibc/glibc-2.14
make -j4
make install

1. 创建文件夹

opt目录下创建 glibc 文件夹以及子文件夹 glibc-2.14

cd /opt
mkdir glibc 
cd glibc
mkdir glibc-2.14

2. 下载glibc-2.14

cd /opt
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz

3. 解压并安装

tar -zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure profix=/opt/glibc/glibc-2.14
make -j4
make install

特别注意

执行: ../configure profix=/opt/glibc/glibc-2.14 时, profix后面的路径不能与解压的路径相同,否则会出现安装失败.
所以一开始先创建了安装目录/opt/glibc/glibc-2.14

如果安装路径与解压路径一致会出现如下错误:

/usr/bin/install: `include/limits.h' and `/opt/glibc-2.14/include/limits.h' are the same file

0x03 设置glibc软链

安装完成后, 建立软链指向glibc-2.14, 执行如下命令:

rm -rf /lib64/libc.so.6             // 先删除先前的libc.so.6软链
ln -s /opt/glibc/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

注意

删除libc.so.6之后可能导致系统命令不可用的情况, 可使用如下方法解决:

LD_PRELOAD=/opt/glibc/glibc-2.14/lib/libc-2.14.so  ln -s /opt/glibc/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

如果上述更新失败可使用如下命令还原:

LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6    // libc-2.12.so 此项是系统升级前的版本

0x04 查看安装结果

再次执行命令: 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

本文参考了以下文章:

分享Centos6.5升级glibc过程 - CNode技术社区
解决'GLIBC_2.14' not found问题时遇到的坑 - 好记性不如赖笔头 - CSDN博客