在升级高版本的glibc,但是自己删除原有软链接的时候,就会系统直接挂了。
原因:libc.so.6 是c运行时库 glibc的软链接,而系统几乎所有程序都依赖c运行时库。程序启动和运行时,是根据libc.so.6 软链接找到glibc库。删除libc.so.6将导致系统的几乎所有程序不能工作。
解决方法如下:
第一步:LD_PRELOAD,是个环境变量,用于动态库的加载,动态库加载的优先级最高,一般情况下,其加载顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/lib>/usr/lib
export LD_PRELOAD="库文件路径",设置要优先替换动态链接库
第二步:ln -sf后面加上f的参数
必要参数:
- -b 删除,覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
或者
LD_PRELOAD=/opt/glibc-2.16.0/lib/libc-2.16.0.so ln -sf /opt/glibc-2.16.0/lib/libc-2.16.0.so /lib64/libc.so.6