"Libstdc ++. So.6: freigegebene Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis"

10

Ich habe mit dem Programm gemäß den Informationen in dieser Frage gerungen . Jetzt ist es installiert, aber ich kann nicht herausfinden, wie es ausgeführt wird. Ein Freund, der dieselbe Version von Ubuntu ausführte, hatte keine Probleme damit, sie nach der Installation auf die gleiche Weise zu starten.

Folgendes habe ich getan:

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

Also ging ich voran und:

$ 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'

Es sollte beachtet werden, dass ich erst vor ein paar Tagen angefangen habe, Linux zu verwenden.

Okay, ich habe es geschafft, apt-file und apt-file update zu installieren.

Dann haben wir jedoch einen weiteren Haken getroffen.

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.

Ich habe das getan, wenn ich es tue, heißt es:

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

Oder

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

Ich erhalte immer noch den gleichen Fehler, wenn ich versuche, Psychonauten auszuführen.

UsagiYojimbo
quelle
1
sudo apt-get install libstdc++6
3ventic
Mögliches Duplikat von "Paket kann nicht gefunden werden" für alle Pakete
BuZZ-dEE

Antworten:

20

Sie erhalten die Fehlermeldung:

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

weil Sie versucht haben, eine Datei zu installieren libstdc++.so.6, die Sie nicht installieren können, weil sie sich in einem Debian-Paket befindet.

Sie können apt-filedamit nach dem Paket suchen, das diese Datei enthält. Geben Sie zum Installieren Folgendes ein:

sudo apt-get install apt-file

Dann müssen Sie den Index aktualisieren.

sudo apt-file update

Danach können Sie nach dem Paket suchen, das die Datei enthält libstdc++.so.6:

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

Dann finden Sie viele Pakete, die die gesuchte Datei enthalten. In Ihrem Fall lautet das richtige Paket libstdc++6:

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

Dann können Sie das benötigte Paket installieren:

sudo apt-get install libstdc++6
BuZZ-dEE
quelle
Okay, ich habe es geschafft, apt-file und apt-file update zu installieren. Dann haben wir jedoch einen weiteren Haken getroffen. usagiyojimbo @ Usagi: ~ $ sudo apt-file find libstdc ++. so.6 [sudo] Passwort für usagiyojimbo: E: Der Cache ist leer. Sie müssen zuerst 'apt-file update' ausführen.
UsagiYojimbo
Lauf sudo apt-file updateund danach sudo apt-file find libstdc++.so.6. Lesen Sie die Antwort oben genau.
BuZZ-dEE
2
Ich bin mir nicht sicher, was ich anders gemacht habe, aber diesmal hat die Suche nach einer passenden Datei funktioniert. Ich bekomme die Liste der Pakete. Wenn ich versuche zu installieren, heißt es, dass libstdc ++ 6 bereits die neueste Version ist. Wenn ich versuche, ./Psychonauts, sagt es immer noch keine solche Datei oder Verzeichnis.
UsagiYojimbo
Und wenn Sie mit 32-Bit-Hardware herumspielen, stellen Sie sicher, dass Sie am Ende Folgendes angeben: sudo apt-get install libstdc ++ 6: i386
Ezekiel Kruglick
9

Ich denke, Psychonauts ist eine 32-Bit-Anwendung. Sie müssen installieren:

apt-get install lib32stdc++6
jhilmer
quelle
Das ist richtig für mich
Damián Rafael Lattenero
3

Sie sind fast da und haben nur ein paar Zeichen mehr verwendet, als Sie benötigt haben:

sudo apt-get install libstdc++6

... sollte den Trick machen.

Braiam
quelle
0

Ich werde mit Ihnen teilen, wie es für mich funktioniert hat. Zunächst sollten Sie feststellen, ob sich bereits eine andere Kopie dieser Datei auf Ihrem Computer befindet:

$ locate libstdc++.so.6

die Ausgabe:

/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

Wie Sie sehen können, gibt es viele /snap/core/...Versionen dieser Datei. (Wenn nicht, funktioniert diese Methode bei Ihnen nicht.)

Sie sollten ein Backup aus der vorhandenen Datei erstellen:

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

Dann können Sie die neueste Snap-Version in die beschädigte Datei ersetzen:

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

Versuchen Sie erneut, den gewünschten Befehl auszuführen.

Saeed Falsafin
quelle