31

在我们的服务器中,指向的符号链接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
4

9 回答 9

35

你可以简单地运行ldconfig. 大多数发行版都将其作为静态二进制文件提供。

于 2012-09-03T14:38:45.577 回答
13

这对我有帮助(实际版本取决于您的库):

ldconfig -l -v /lib/libc-2.13.so
于 2013-05-07T12:33:24.570 回答
13

尝试:

LD_PRELOAD=/lib/libc-2.17.so ln -s /lib/libc-2.17.so /lib/libc.so.6

注意:实际版本取决于您的库。

于 2014-01-05T01:55:40.887 回答
5

使用诸如 Knoppix 之类的 live cd 引导,并在将带有“损坏”系统的磁盘从正在运行的 live 系统中安装出来后修复丢失的链接。

于 2012-09-03T14:17:03.053 回答
4

注意,对于 64 位:

LD_PRELOAD=libc-2.13.so ln -s libc-2.13.so libc.so.6

这对我很有用

如果您不在该目录中,那当然是这样的:
LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.13.so ln -s /lib/x86_64-linux-gnu/libc-2.13.so /lib/x86_64-linux-gnu/libc.so.6

于 2014-05-08T16:49:33.853 回答
3

如果您之前执行过 ls 命令并且知道 libc 的版本是什么,

ldconfig -l -v /lib64/libc-2.x.so

你的版本在哪里x工作。请注意,它可能是 lib64 或 lib,具体取决于您的版本。

我只是这样做了,它奏效了。

简而言之,永远不要删除链接。馊主意。

于 2015-02-06T00:01:30.663 回答
3

如果您使用的是 Ubuntu,则 ldconfig 将不起作用。赶紧跑:

/sbin/ldconfig.real
于 2019-04-12T03:00:33.977 回答
2

非常感谢您的以下回答。它适用于根 ID。我们取消链接libc.so.6以链接到更高版本,但在取消链接 libc.so.6 服务器后突然变得无响应。 ln -s命令不起作用。没有其他用户能够通过 ssh 连接到服务器。但是当我们在命令下运行时,它起作用了。(服务器上存在 libc 版本)服务器开始正常运行。

下面一个是正确的命令和救生太......

LD_PRELOAD=/lib/libc-2.17.so ln -s /lib/libc-2.17.so /lib/libc.so.6

注意:实际版本取决于您的库

于 2018-09-18T12:54:40.020 回答
0

我在尝试升级符号链接时不小心删除了文件 /lib64/libc.so.6 ......这很奇怪。ls、du、cd vim、su 等命令都不起作用

唯一能救我的是,我已经以 root 用户身份登录,所以运行“$ sln /lib64/libc.so-2.12 /lib64/libc.so.6”,这救了我的命

请参考此链接,它非常有帮助。而不是启动服务器和 https://www.programmersought.com/article/2176688665/ 只需确保您可以再次链接的符号链接与前一个相同

建议在重新启动等之前尝试所有操作,并且不要退出 bash 终端

于 2021-06-21T13:17:31.260 回答