yum install安装了一个软件之后,发现用什么命令都不好使了。错误提示信息:
ls: error while loading shared libraries: /lib/libc.so.6: unexpected reloc type 0x25
【或者自己更新lib.c.so.6库时,执行了rm /lib/libc.so.6 -f
命令】。
根据提示信息,推测是安装软件之后,libc.so.6被更新,链接到了新的libc库了。
此现象之前遇到过,ls、ps、mv、rm等命令都用不了了。
幸好还有cd、export、ln可用。
解决方法:
- ls命令虽然不能用,但是可以用ls /lib64/libc + Tab键(或者ls /lib/libc + Tab键),查看到/lib64 和 /lib 目录下的libc相关的库名称,当前为libc-2.12.so和libc-2.5.so。
- 安装程序时,更新libc一般是将老的替换成新的,因此推测是新的在此系统不可用,使用老的libc-2.5.so。
- 在当前环境中提前加载可用的动态库/lib64/libc-2.12.so,如果加载的libc库可用,加载后linux命令就可用了。
- linux命令可以后,删除/lib/libc.so.6软连接。
- 创建软链接/lib/libc.so.6到可用的libc库。
操作如下:
# rm /lib64/libc.so.6 -f
# export LD_PRELOAD=/lib64/libc-2.12.so
# ln -s /lib64/libc-2.12.so /lib64/libc.so.6