glibc升级失败及处理过程
centos 6.2 升级glibc , 想用新的包代替旧的包,rm /lib64/libc.so.6 之后,系统部分命令用不了,远程登录也不行【幸好原来旧的ssh 连接还没断】
[root@VM_2centos lib64]# /bin/ls
/bin/ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
解决:
cd /lib64
LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so libc.so.6
OK了,原理:
LD_PRELOAD解决的原理是:linux调用so的库文件时,搜素路径为当前路径,再是系统lib目录。但是提供了一个LD_PRELOAD系统变量来改变这个顺序。设置LD_PRELOAD了后,库加载的顺序就改为:
搜素路径为: LD_PRELOAD ,当前路径,再是系统lib目录
又作死,新编译了glibc-2.14,把最新的libc.so 复制到/lib64和/lib下,做软连接
ln -sf /lib64/libc.so /lib64/libc.so.6
ln -sf /lib/libc.so /lib/libc.so.6
发现新源码编译安装的mysql启动不来,一堆内存错误
再次rm /lib/libc.so