问题分析与解决
从上面的日志可以分析出来,在执行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