libc.so.6被删除修复ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
升级 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版本兼容问题
将另外一个版本的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 2、执行命令都是报错:
3、重新建软连接、恢复正常
4、原理说明 |