首先普及一下关于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急救方法的更多相关文章

  1. 【linux】Linux误删C基本运行库libc.so.6急救方法

    转自:http://www.cnblogs.com/fjping0606/p/4551475.html 下面全文都是拷贝的上面链接的内容. 首先普及一下关于libc.so.6的基本常识: libc.s ...

  2. Linux误删C基本运行库libc.so.6处理方法

    1. libc.so.6介绍/usr/lib/libc.so.6是glibc的软链接,不同的平台可能路径会不一样.使用命令查看会看到: [root@farmer:~]$ls -l /lib/libc. ...

  3. Linux升级C基本运行库CLIBC

    在你准备升级GLIBC库之前,你要好好思考一下, 你真的要升级GLIBC么? 你知道你自己在做什么么? glibc是gnu发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎 ...

  4. linux c++ 加载动态库常用的三种方法

    链接库时的搜索路径顺序:LD_LIBRARY_PATH --> /etc/ld.so.conf --> /lib,/usr/lib 方法1. vi .bash_profile    设置环 ...

  5. 在linux环境下编译运行OpenCV程序的两种方法

    原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之 ...

  6. Linux 下 GCC 编译共享库控制导出函数的方法

    通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...

  7. Linux误删python导致yum不可用,删除重装方法。

    Linux 系统为 CentOS Linux release 7.4.1708 手贱.手贱.手贱 删了python 导致yum不可用.百度一大圈,重装yum和python后,老是报各种各样的错.历经磨 ...

  8. linux指定动态运行库的位置

    动态运行库在windows.linux下均广泛使用.windows下通常为dll文件,linux下为so文件.不过,对于部署程序,这两个系统查找依赖的运行库文件时却不一样.对于windows而言,优先 ...

  9. 如何查看Linux系统下程序运行时使用的库?

    Linux系统下程序运行会实时的用到相关动态库,某些场景下,比如需要裁剪不必要的动态库时,就需要查看哪些动态库被用到了. 以运行VLC为例. VLC开始运行后,首先查看vlc的PID,比如这次查到的V ...

随机推荐

  1. 【HDOJ】1107 武林

    简单模拟,题目数据太弱太弱了. /* 1107 */ #include <iostream> #include <cstdio> #include <cstring> ...

  2. 【转】Android手机客户端关于二维码扫描的源码--不错

    原文网址:https://github.com/SkillCollege/QrCodeScan QrCodeScan 这是Android手机客户端关于二维码扫描的源码,使用了高效的ZBar解码库,并修 ...

  3. DataTable排序(来自其他空间)

    DataTable排序 DataRow[] rows = dataTable1.Select("", "ord asc"); DataTable t = Dat ...

  4. ASPNET异步删除和增加

    function InitList() { $.getJSON("GetNewsList.ashx", {}, function (data) { for (var i = 0; ...

  5. UVA 11389 The Bus Driver Problem

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82842#problem/D In a city there are n bus ...

  6. 解决nginx session共享的问题

    不使用session,换作cookie 能把session改成cookie,就能避开session的一些弊端,在从前看的一本J2EE的书上,也指明在集群系统中不能用session,否则惹出祸端来就不好 ...

  7. DeepLearnToolbox使用总结

    GitHub链接:DeepLearnToolbox DeepLearnToolbox A Matlab toolbox for Deep Learning. Deep Learning is a ne ...

  8. springmvc对jsonp的支持

    在与前端开发人员合作过程中,经常遇到跨域名访问的问题,通常我们是通过jsonp调用方式来解决.jsop百科:http://baike.baidu.com/link?url=JKlwoETqx2uuKe ...

  9. ruby+rt标签的效果

    代码如下: <ruby>我是孤行者<rt>wo shi gu xing zhe</tr></ruby> 效果如下

  10. linux性能分析命令和性能观察工具