资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

阿里云服务器误删glibc 阿里云服务器怎么销毁

升级后Linux,glibc怎么还原到之前配置

这个其实应该找一个旧版本的ntfs-3g,版本太新

藤县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

另外,不要随便编译安装glibc,如果你新编译的glibc覆盖了系统中的,不能保证你的系统还能正常使用

linux:执行任何命令提示-bash: /lib64/libc.so.6: version `GLIBC_2.11' not found ...错误

只能重新安装glibc的rpm包了。

ssh也无法连接服务器,那么可以用光驱,通过挂载系统镜像,来安装rpm包

gethostbyname与DNS

域名查询(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 ),我还没尝试过。还可以阅读大神章亦春(春哥)写的文章 动态追踪技术漫谈 。

GLIBC_2.14 not found

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


网页题目:阿里云服务器误删glibc 阿里云服务器怎么销毁
文章链接:http://www.cdkjz.cn/article/ddsepjj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220