ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
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
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,误操作导致的

2、执行命令都是报错:
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目录
|