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博客