“libstdc++.so.6:无法打开共享对象文件:没有此文件或目录”

“libstdc++.so.6:无法打开共享对象文件:没有此文件或目录”

我根据以下信息与该程序进行了斗争这个问题。现在它已安装完毕,但我不知道如何运行它。一位运行相同版本 Ubuntu 的朋友以相同方式安装后,启动时没有遇到任何问题。

这是我所做的:

$ ./Psychonauts
./Psychonauts: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

因此我继续说道:

$ sudo apt-get install libstdc++.so.6
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libstdc++.so.6
E: Couldn't find any package by regex 'libstdc++.so.6'

需要说明的是,我几天前才开始使用 Linux。

好的,我确实设法安装了 apt-file 和 apt-file update。

然而我们又遇到了另一个障碍。

usagiyojimbo@Usagi:~$ sudo apt-file find libstdc++.so.6
[sudo] password for usagiyojimbo: 
E: The cache is empty. You need to run 'apt-file update' first.

我已经这样做了,当我这样做时它说:

File is up-to-date.
Ignoring source without Contents File:
a link they won't let me post

或者

File is up-to-date.
Downloading Index a link
No Index available.
Downloading complete file a link

当我尝试运行 Psychonauts 时仍然出现同样的错误。

答案1

您收到以下错误消息:

E: Unable to locate package libstdc++.so.6
E: Couldn't find any package by regex 'libstdc++.so.6'

因为您尝试安装一个libstdc++.so.6无法安装的文件,因为它位于 debian 包中。

您可以使用apt-file搜索包含该文件的包。要安装它,请输入:

sudo apt-get install apt-file

然后你必须更新索引。

sudo apt-file update

之后,您可以搜索包含该文件的包libstdc++.so.6

sudo apt-file find libstdc++.so.6

然后,您会找到很多包含搜索文件的软件包。对于您来说,正确的软件包是libstdc++6

libstdc++6: /usr/lib/x86_64-linux-gnu/libstdc++.so.6

然后你可以安装所需的包:

sudo apt-get install libstdc++6

答案2

我认为 Psychonauts 是一款 32 位应用程序。您需要安装:

apt-get install lib32stdc++6

答案3

您几乎已经完成了,只需使用比所需多一些的字符即可:

sudo apt-get install libstdc++6

...应该可以解决问题。

答案4

我将与你分享我的方法。首先,你应该检查你的机器上是否已有此文件的其他副本:

$ locate libstdc++.so.6

输出:

/snap/core/6405/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core/6405/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
/snap/core/6405/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21-gdb.py
/snap/core/6531/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core/6531/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
/snap/core/6531/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21-gdb.py
/snap/core/6673/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core/6673/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
/snap/core/6673/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21-gdb.py
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25-gdb.py

如您所见,/snap/core/...此文件有许多版本。(如果没有,则此方法不适合您)

您应该从现有文件进行备份:

$ sudo mv /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.backup

然后,您可以将最新的 snap 版本替换到损坏的文件中:

sudo cp /snap/core/6673/usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

尝试再次运行所需的命令。

相关内容