GLIBC_2.14 not found

image.png

问题分析与解决

从上面的日志可以分析出来,在执行Android编译的时候,aapt执行失败了,因为aapt需要/lib64/libc.so.6文件

/lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/android/sdk/build-tools/27.0.3/aapt)
/opt/android/sdk/build-tools/27.0.3/aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/android/sdk/build-tools/27.0.3/lib64/libc++.so)
1. 查看系统版本
[root@localhost glibc-build-2.14]#  cat /etc/redhat-release 
CentOS release 6.5 (Final)
[root@localhost glibc-build-2.14]# 
2. glibc库版本
root@localhost /]#  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
[root@localhost /]# 

由上面的信息可以看出系统是CentOS 6.5,最高支持glibc的版本为2.12,而研发程序要2.14版本,所以需要升级。

3. 下载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
 #创建相关目录
 mv glibc-ports-2.14 glibc-2.14/ports
 mkdir glibc-build-2.14
 cd glibc-build-2.14/ 

 #生成C编译的环境
 yum -y install gcc

 #编译C
 ../glibc-2.14/configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
 make

 # 安装刚才编译好的 libc.so
 makeinstall 

 # 查看glibc库版本
 strings /lib64/libc.so.6 |grep GLIBC_
步骤拆分
  • 下载glibc-2.14.tar.gz 和 glibc-ports-2.14.tar.gz 并解压
#执行以下命令即可下载
 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-build-2.14
cd glibc-build-2.14/ 

将glibc-ports-2.14目录移动到 glibc-2.14/ports,并创建一个目录 glibc-build-2.14,并且接入该目录

  • 安装gcc并编译
cd glibc-build-2.14/ 
../glibc-2.14/configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make

直接编译会出错,会报一个错误 configure: error: no acceptable C compiler found in $PATH,查看提示发现是因为该Linux服务器上没有安装gcc编译器,缺少gcc编译环境,可以通过yum安装gcc编译环境:yum install gcc

错误提示

configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.

执行以下命令安装gcc

yum install gcc

执行一会儿,gcc环境就安装好了。然后我们可以重新执行上面的编译命令

cd glibc-build-2.14/ 
../glibc-2.14/configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make
  • 安装刚才编译好的so
    继续完成后续的安装,执行下面的命令即可
make install

以上完成不报错的话,查看库文件,发现/lib64/libc.so.6软链接指向了2.14版本

[root@localhost glibc-2.14]# ll /lib64/libc.so.6 
lrwxrwxrwx. 1 root root 12 4月  17 13:03 /lib64/libc.so.6 -> libc-2.14.so
[root@localhost glibc-2.14]# 
  • 再次查看glibc支持的版本
[root@localhost glibc-2.14]# 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
[root@localhost glibc-2.14]# 

可以看到glibc支持的版本已经到2.14,再次执行程序就不会报错了。

4. 重新运行Jenkins编译看看

再一次重新运行Jenkins进行编译,发现是编译成功的。大功告成!

参考文档1
参考文档2

你可能感兴趣的:(GLIBC_2.14 not found)