该错误可能与主题中的错误略有不同 - 我正在从我的母语翻译它。
一切都失败后,我尝试按照 mjp 在这篇文章中指出的那样做: 未找到 GLIBCXX_3.4.20,如何修复此错误?
但结果是,每个命令(apt-get、mv、cp)都返回主题标题的错误。我无法返回文件的备份版本。
目前我甚至无法登录 Ubuntu。我被困在登录屏幕内。每次我尝试登录时,屏幕都会变黑,然后我又要重新登录。我只能通过 ctrl+alt+F3 使用该命令
我应该怎么办?
steeldriver 的回答(请看评论):
lrwxrwxrwx 1 root root 40 Jun 17 21:37 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> /usr/lib/x86_64-linux-gnu/libstdc++.so.6
-rw-r--r-- 1 root root 979056 May 7 2016 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.19
lrwxrwrwx 1 root root 19 May 7 2016 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.old -> libstdc++.so.6.0.19
答案1
[我必须承认我有点困惑为什么像mv
或这样的基本实用程序cp
会因为而中断libstdc++.so.6
,但是假设这是原因,我会尝试以下方法]
您的busybox ls
输出表明您已成功递归链接/usr/lib/x86_64-linux-gnu/libstdc++.so.6
到自身。幸运的是,您似乎没有删除或覆盖实际/usr/lib/x86_64-linux-gnu/libstdc++.so.6.19
库。因此,您应该能够通过重新创建符号链接来恢复。
sudo
如果其中一个或ln
两个都依赖于该libstdc++
库,则会出现问题。(可能bash
不,因为您可以在虚拟终端上使用 shellCtrl登录Alt。F3)
如果sudo
损坏,那么你仍然应该能够从恢复模式启动到 root shell,如我如何启动到 root shell?. 然后你需要以读写模式重新挂载根文件系统
mount -o remount,rw /
之后,您可以尝试修复损坏的链接
ln -sf libstdc++.so.6.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(这应该创建一个相对符号链接这是相对于目标路径解析的/usr/lib/x86_64-linux-gnu/
,类似于您的.old
链接)。
假设由于ln
依赖于而失败,您可以使用具有内置的libstdc++.so
静态链接可执行文件再次尝试:busybox
ln
/bin/busybox ln -sf libstdc++.so.6.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
如果有效,您可以使用exit
root shell 继续正常启动。