【发布时间】:2012-08-28 06:58:18
【问题描述】:
在我们的服务器中,指向libc.so.6 的符号链接已被删除。现在系统中的所有二进制文件都不起作用。为了解决这个问题,我尝试了:
/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6
正如预期的那样,给了我:
/bin/ln: error while loading shared libraries: libc.so.6:
cannot open shared object file: No such file or directory
我也试过了:
/lib/ld-linux-x86-64.so.2 --inhibit-rpath /lib/libc.so.6 \
--library-path /lib/libc-2.11.3.so \
/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6
结果相同。进一步不成功的尝试包括cp、mv、cat。
我是通过 ssh 连接的,我相信在关闭这个会话后我将无法打开另一个会话。有没有办法修复这个系统(也许使用 bash 内置)?
[编辑] 我做了:
while read line; do echo $line; done < /lib/libc-2.11.3.so > libc.so.6
复制文件并尝试:
/lib/ld-linux-x86-64.so.2 --inhibit-rpath libc.so.6 --library-path . \
/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6
得到:
/bin/ln: error while loading shared libraries: ./libc.so.6: ELF file OS ABI invalid
【问题讨论】:
-
您可以使用静态二进制文件,例如
sash静态链接的 shell(您之前会安装),其中包含一个内置的cp-like 命令 -
你的
echo需要一个-nE否则它会在输出中添加你不想要的换行符,并且可能会解释转义 -
使用 read/echo 复制文件不会使其可执行...
标签: linux shared-libraries glibc