这个其实应该找一个旧版本的ntfs-3g,版本太新
藤县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
另外,不要随便编译安装glibc,如果你新编译的glibc覆盖了系统中的,不能保证你的系统还能正常使用
只能重新安装glibc的rpm包了。
ssh也无法连接服务器,那么可以用光驱,通过挂载系统镜像,来安装rpm包
域名查询(Domain Name Query)在Linux上的执行主要由glibc库函数 gethostbyname 与 gethostbyaddr 来完成,通过 strace 跟踪可知 gethostbyname 的执行流程如下:
注:关于DNS与 dig 命令的介绍请阅读 阮一峰 老师的文章 DNS原理入门 。
先介绍下我的系统环境:
在 没有 配置 nscd 的服务器上,用 strace 追踪 gethostbyname ,其大致流程摘录如下(省略的部分用 ...... 表示)。库函数 gethostbyname 的使用可参考 该页面 。
要想查看某个程序是否调用 gethostbyname ,只需用 ltrace 命令跟踪一下查看其库函数调用即可:
注:在 man gethostbyname 中有一句:
笔者所在公司的服务器上并没有配置 nscd ,但笔者的阿里云个人服务器上却默认配置了 nscd 。从 man nscd 摘录如下:
Linux服务器上一般都会配置 dnsmasq 服务,用于缓存DNS请求结果,节省应用程序的域名解析时间。笔者的笔记本 Ubuntu 16.04 LTS 也默认配置了 dnsmasq ,同样笔者的 macOS Sierra 上也默认有一个叫 mDNSResponder 的服务。 dnsmasq 简介如下:
dnsmasq 通常会绑定本地 127.0.0.1:53 ,假设配置的DNS服务器是Google Public DNS,则 dnsmasq 的配置 /etc/dnsmasq.conf 一般如下:
这样, /etc/resolv.conf 的配置如下。注意第一项 nameserver 是本地IP 127.0.0.1 ,也就利用上了 dnsmasq 的DNS缓存功能。
网络上广泛使用的DNS服务器通常是 bind ,简介如下:
用 strace 追踪可知, dig 命令是通过读配置文件 /etc/resolv.conf ,然后向其中列出的DNS服务器发出DNS请求。
在日常开发和学习中,遇到问题或对某个东西感到疑惑的时候,对程序进行调用跟踪和对网络进行抓包,是非常有效的分析方式。
用 strace 来跟踪系统函数调用,细节请参考 man strace 。
用 ltrace 来跟踪库函数调用,细节参考 man ltrace 。
用 wireshark (GUI)、 tshark 、 tcpdump 来进行网络抓包,细节参考各自的 man 说明页。
更加强大和复杂的动态追踪技术,请参考 SystemTap 和DTrace( DTrace for Linux 2016 , wikipedia ),我还没尝试过。还可以阅读大神章亦春(春哥)写的文章 动态追踪技术漫谈 。
从上面的日志可以分析出来,在执行Android编译的时候,aapt执行失败了,因为aapt需要/lib64/libc.so.6文件
由上面的信息可以看出系统是CentOS 6.5,最高支持glibc的版本为2.12,而研发程序要2.14版本,所以需要升级。
将glibc-ports-2.14目录移动到 glibc-2.14/ports,并创建一个目录 glibc-build-2.14,并且接入该目录
直接编译会出错,会报一个错误 configure: error: no acceptable C compiler found in $PATH,查看提示发现是因为该Linux服务器上没有安装gcc编译器,缺少gcc编译环境,可以通过yum安装gcc编译环境:yum install gcc
错误提示
执行以下命令安装gcc
执行一会儿,gcc环境就安装好了。然后我们可以重新执行上面的编译命令
以上完成不报错的话,查看库文件,发现/lib64/libc.so.6软链接指向了2.14版本
可以看到glibc支持的版本已经到2.14,再次执行程序就不会报错了。
再一次重新运行Jenkins进行编译,发现是编译成功的。大功告成!
参考文档1
参考文档2