升级 glic后,libc.so.6被删除修复

报错

ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

[root@static-resource bin]# ls /lib64/libc.so.6
/lib64/libc.so.6
[root@static-resource bin]# ls /lib64/libc.so.6  -l
lrwxrwxrwx 1 root root 12 Mar  5  2019 /lib64/libc.so.6 -> libc-2.12.so
[root@static-resource bin]# rm /lib64/libc.so.6
[root@static-resource bin]# ln -s /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

[root@static-resource lib]# ls /lib64/libc.so.6

ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@static-resource lib]# LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6

alsa  cpp  crda  firmware

恢复 正常

 

 

GLIBC版本兼容问题
 

       http://bbs.chinaunix.net/thread-2032257-1-1.html
         将另外一个版本的Glibc安装在别的目录,比如/usr/local/lib/glibc-xxxx,然后,在你执行程序的时候,为这个程序设置一个环境变量LD_LIBRARY_PATH,这里面包含所有的库的路径,但是,/usr/local/lib/glibc-xxxx路径必须在/lib目录的前面。
这样做有一个前提,那就是你的程序所有直接或间接用到的glibc的动态库,都只用旧版的。如果某个额外的动态库用到了新版的glibc,它是找不到的。
PS:这个环境变量只给你这个程序设,千万不要设成系统的默认环境变量。比如,你可以这样运行程序:
命令行$    LD_LIBRARY_PATH=XXX:XXX:XX ./getpoint.cgi
  (2)           libc.so是GLIBC库的动态链接库,如果这个被删除了,很多command是没有办法用的包括ls,ln,rm等命令。
         因此如果你有一个其它的Libc.so或者不同版本的,可以使用下面的命令,表示运行当前命令使用
     命令行提供的real libc作为链接库。  
    使用这个命令,

 

      LD_PRELOAD=<real libc> ln -s <real libc> libc.so.6

    例如:

    LD_PRELOAD=/lib/libc-2.12.so ln -s /lib/libc-2.12.so libc.so.6

 

参考其它:

系统环境:centos6
1、需要升级版本libc,误操作导致的

libc.so.6被删除修复ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

2、执行命令都是报错:

# ll
ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@localhost ~]# ls
ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

3、重新建软连接、恢复正常

LD_PRELOAD=/lib64/libc-2.15.so ln -s /lib64/libc-2.15.so /lib64/libc.so.6

4、原理说明
LD_PRELOAD解决的原理是:linux调用so的库文件时,搜素路径为当前路径,再是系统lib目录。但是提供了一个LD_PRELOAD系统变量来改变这个顺序。搜素路径为: LD_PRELOAD ,当前路径,再是系统lib目录

相关文章:

  • 2022-12-23
  • 2021-12-05
  • 2021-11-22
  • 2022-02-20
  • 2021-08-19
  • 2021-08-19
  • 2021-07-16
  • 2022-12-23
猜你喜欢
  • 2021-11-25
  • 2022-12-23
  • 2022-12-23
  • 2021-08-22
  • 2021-08-30
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案