“ libstdc ++。so.6:无法打开共享库文件:没有这样的文件或目录”


10

我根据这个问题中的信息对程序感到不满。现在已经安装了,但是我不知道如何运行它。运行相同版本的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更新。

但是随后我们遇到了另一个障碍。

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
sudo apt-get install libstdc++6
3ventic 2014年

Answers:


20

您收到错误信息:

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

好的,所以我确实设法安装了apt-file和apt-file更新。但是随后我们遇到了另一个障碍。usagiyojimbo @ Usagi:〜$ sudo apt-file查找libstdc ++。so.6 usagiyojimbo的[sudo]密码:E:缓存为空。您需要先运行“ apt-file update”。
UsagiYojimbo 2014年

运行sudo apt-file update,然后sudo apt-file find libstdc++.so.6。仔细阅读以上答案。
2014年

2
不知道我做了什么不同,但是这次apt-file查找工作了。我得到了包装清单。当我尝试安装时,它说libstdc ++ 6已经是最新版本。当我尝试使用./Psychonauts时,它仍然说没有这样的文件或目录。
UsagiYojimbo 2014年

而且,如果您正在使用32位硬件,请确保在末尾指定:sudo apt-get install libstdc ++ 6:i386
Ezekiel Kruglick


3

您快到了,只不过使用了一些比您需要的字符多的字符:

sudo apt-get install libstdc++6

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


0

我将与您分享对我有用的方式。首先,您应该确定计算机上是否已存在此文件的任何其他副本:

$ 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

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.