Linux误删C基本运行库libc.so.6急救方法
首先普及一下关于libc.so.6的基本常识:
libc.so.6是glibc的软链接
ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 11 Aug 27 2014 /lib64/libc.so.6 -> libc-2.5.so
glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc,所以说绝大部分操作命令都缺少不了它
如何误删了/lib64/libc.so.6,大部分系统命令将无法执行,ssh登录系统也不成功,只会无休止的提示以下错误:
error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
这种情况下,大部分命令已经不能执行了,只能执行例如cd,echo等小部分命令,而实用的cp,mv则不可用
经过各种百度,得到解决方法(而此种方法的前提是ssh还没断开,如果ssh已断开则无法重新连接上,得使用另外的方法用光盘重启进入急救模式):
在同版本系统上查看/lib64/libc.so.6得知是属于libc-2.5.so的软链接,因此,libc-2.5.so文件肯定还是存在的,误删的只是软链接而已,但此时想用ln命令重新建立软链接是失败的,但是可以这样强制设置变量就能执行成功
LD_PRELOAD=/lib64/libc-2.5.so ln -s /lib64/libc-2.5.so /lib64/libc.so.6
注意的是,这整条命令要在同一行执行,不能分两行,否则就无效了
glibc是一个非常底层的库,bash也依赖她,所以,如果把这个库干掉了,基本上啥事都干不了了,但是为啥前面设置一下LD_PRELOAD变量 就可以了呢?是这样的,LD_PRELOAD可以影响程序的运行时的链接(Runtime linker), 它允许你定义在程序运行前优先加载的动态链接库,之前把libc.so.6这个软连接给干掉了,所以系统找不到这个库了,但是通过LD_PRELOAD设置一下glibc这个库的真实地址就可以解决这个问题了
通过前面设置一下LD_PRELOAD变量,后面也是可以执行其它例如cp,mv等命令的
例如我一开始不是误删,只是把libc.so.6改名了,从而也导致了上面的错误,于是就可以按照下面方法恢复libc.so.6
LD_PRELOAD=/lib64/libc-2.5.so mv /lib64/libc.so.6.bak /lib64/libc.so.6
Linux误删C基本运行库libc.so.6急救方法的更多相关文章
- 【linux】Linux误删C基本运行库libc.so.6急救方法
转自:http://www.cnblogs.com/fjping0606/p/4551475.html 下面全文都是拷贝的上面链接的内容. 首先普及一下关于libc.so.6的基本常识: libc.s ...
- Linux误删C基本运行库libc.so.6处理方法
1. libc.so.6介绍/usr/lib/libc.so.6是glibc的软链接,不同的平台可能路径会不一样.使用命令查看会看到: [root@farmer:~]$ls -l /lib/libc. ...
- Linux升级C基本运行库CLIBC
在你准备升级GLIBC库之前,你要好好思考一下, 你真的要升级GLIBC么? 你知道你自己在做什么么? glibc是gnu发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎 ...
- linux c++ 加载动态库常用的三种方法
链接库时的搜索路径顺序:LD_LIBRARY_PATH --> /etc/ld.so.conf --> /lib,/usr/lib 方法1. vi .bash_profile 设置环 ...
- 在linux环境下编译运行OpenCV程序的两种方法
原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之 ...
- Linux 下 GCC 编译共享库控制导出函数的方法
通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...
- Linux误删python导致yum不可用,删除重装方法。
Linux 系统为 CentOS Linux release 7.4.1708 手贱.手贱.手贱 删了python 导致yum不可用.百度一大圈,重装yum和python后,老是报各种各样的错.历经磨 ...
- linux指定动态运行库的位置
动态运行库在windows.linux下均广泛使用.windows下通常为dll文件,linux下为so文件.不过,对于部署程序,这两个系统查找依赖的运行库文件时却不一样.对于windows而言,优先 ...
- 如何查看Linux系统下程序运行时使用的库?
Linux系统下程序运行会实时的用到相关动态库,某些场景下,比如需要裁剪不必要的动态库时,就需要查看哪些动态库被用到了. 以运行VLC为例. VLC开始运行后,首先查看vlc的PID,比如这次查到的V ...
随机推荐
- Delphi-LowerCase 函数
函数名称 LowerCase 所在单元 System.SysUtils 函数原型 function LowerCase(const S: string): string; 函数功能 将字符串中所有的大 ...
- AngularJs 【使用】 -- ng-repart 排序使用
1.单字段 ng-repeat="item in dataList | orderBy:'field' " 2.多字段 ng-repeat="item in dataLi ...
- 你以为PHP那么好自定义升级?
X,PHP如果只是安装操作系统之后,YUM INSTALL之后就可以使用最好啦. 但如果YUM安装的官方PHP版本太低怎么办? 据我所知,现在也只是到PHP5.3.3版本,如果APP应用需要PHP5. ...
- Debug与Release有时候确实不一致
不一致的原因不清楚. 情况1:耗了整整一天,也没查出Debug状况下错误的原因(3个库函数,用了1年多了,已经熟练使用,不会有问题的).到现在还是没搞明白为什么出问题. 情况2:还是上面的三个函数,D ...
- Windows 7 mklink命令详解
mklink是Windows 7下的一个类似于linux下In的命令,其作用是在NTFS文件系统中创建文件或目录的链接(类似于桌面快捷方式).如果加以利用其发挥的作用是非常的大的,不仅可以帮助我们节省 ...
- x86 构架的 Arduino 开发板Intel Galileo
RobotPeak是上海的一家硬件创业团队,团队致力于民用机器人平台系统.机器人操作系统(ROS)以及相关设备的设计研发,并尝试将日新月异的机器人技术融入人们的日常生活与娱乐当中.同时,RobotPe ...
- -_-#微信内置JavaScript API WeixinJSBridge
微信相关的 js 操作:分享.网络.菜单 微信内置JsAPI之WeixinJSBridge微信WeixinJSBridge API续
- Alert Views
Alert views display a concise and informative alert message to the user. Alert views convey importan ...
- C#中用PadLeft、PadRight 补足位数
在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位. PadLeft(int totalWidth, char paddingChar) //在字符串左边用 paddi ...
- 修改上一篇文章的node.js代码,支持默认页及支持中文
服务端 app.js var app = require('http').createServer(handler) var io = require('socket.io')(app); var f ...