我用Ubuntu10.10,不小心误删libc.so.6,系统起不来,同事说用单用户模式能进去,但是试了下还是不行,启动后提示/bin/bash:error while loading shared libraries: libc.so.6:cannot open shared object file :no such file or directory
哪位大侠有办法能让我的系统起来。若能指点一二,小弟在此跪谢了
7 个解决方案
#1
用livecd,启动系统,挂载你的硬盘,把库放到系统路径中(不记得这个.so在哪个目录了。。。)。
#2
这个livecd。。。。。以前没有听过哦 好用不?
#3
比较像windows下的winPE, 在u盘上做一个livecd系统
然后将libc.so.6拷贝到u盘里面
重启电脑时选择优先从u盘启动
进入livecd系统后,将libc.so.6文件拷贝到/lib 目录下面
#4
#5
我去,这个都能删
#6
LD_PRELOAD=/lib/libc-2.6.1.so ln -s /lib/libc-2.6.1.so libc.so.6
根据shell/exec加载elf程序的原理,是先解析ELF,定位并加载ld-linux.so这个程序加载器(该so路径需要通过ELF直接确定,且不依赖其他库),然后再解析elf中需要load的共享库,但这之前可以通过LD_PRELOAD来提前预先加载共享库,如果程序允许需要的未初始化symbol在预加载库中的话,就不会再load needed的共享库(如果预先加载的库也不满足运行需要,则继续根据编译时symbol所needed关系来load对应的so库,如果库查找后不存在就报load error。
预先加载so库的好处:避免了程序运行时所谓的库缺失,可以理解为是一种半自动的so加载过程,需要LD_PRELOAD变量来指定真实的库路径。当前,所有一切的功劳都是ld-linux的魅力所在。
根据shell/exec加载elf程序的原理,是先解析ELF,定位并加载ld-linux.so这个程序加载器(该so路径需要通过ELF直接确定,且不依赖其他库),然后再解析elf中需要load的共享库,但这之前可以通过LD_PRELOAD来提前预先加载共享库,如果程序允许需要的未初始化symbol在预加载库中的话,就不会再load needed的共享库(如果预先加载的库也不满足运行需要,则继续根据编译时symbol所needed关系来load对应的so库,如果库查找后不存在就报load error。
预先加载so库的好处:避免了程序运行时所谓的库缺失,可以理解为是一种半自动的so加载过程,需要LD_PRELOAD变量来指定真实的库路径。当前,所有一切的功劳都是ld-linux的魅力所在。
#7
用安全模式启动,然后chroot到 系统目录,copy一份进去,然后再启动啦
#1
用livecd,启动系统,挂载你的硬盘,把库放到系统路径中(不记得这个.so在哪个目录了。。。)。
#2
这个livecd。。。。。以前没有听过哦 好用不?
#3
比较像windows下的winPE, 在u盘上做一个livecd系统
然后将libc.so.6拷贝到u盘里面
重启电脑时选择优先从u盘启动
进入livecd系统后,将libc.so.6文件拷贝到/lib 目录下面
#4
#5
我去,这个都能删
#6
LD_PRELOAD=/lib/libc-2.6.1.so ln -s /lib/libc-2.6.1.so libc.so.6
根据shell/exec加载elf程序的原理,是先解析ELF,定位并加载ld-linux.so这个程序加载器(该so路径需要通过ELF直接确定,且不依赖其他库),然后再解析elf中需要load的共享库,但这之前可以通过LD_PRELOAD来提前预先加载共享库,如果程序允许需要的未初始化symbol在预加载库中的话,就不会再load needed的共享库(如果预先加载的库也不满足运行需要,则继续根据编译时symbol所needed关系来load对应的so库,如果库查找后不存在就报load error。
预先加载so库的好处:避免了程序运行时所谓的库缺失,可以理解为是一种半自动的so加载过程,需要LD_PRELOAD变量来指定真实的库路径。当前,所有一切的功劳都是ld-linux的魅力所在。
根据shell/exec加载elf程序的原理,是先解析ELF,定位并加载ld-linux.so这个程序加载器(该so路径需要通过ELF直接确定,且不依赖其他库),然后再解析elf中需要load的共享库,但这之前可以通过LD_PRELOAD来提前预先加载共享库,如果程序允许需要的未初始化symbol在预加载库中的话,就不会再load needed的共享库(如果预先加载的库也不满足运行需要,则继续根据编译时symbol所needed关系来load对应的so库,如果库查找后不存在就报load error。
预先加载so库的好处:避免了程序运行时所谓的库缺失,可以理解为是一种半自动的so加载过程,需要LD_PRELOAD变量来指定真实的库路径。当前,所有一切的功劳都是ld-linux的魅力所在。
#7
用安全模式启动,然后chroot到 系统目录,copy一份进去,然后再启动啦