"Libstdc ++. So.6: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type"

10

Je me suis disputé le programme selon les informations de cette question . Maintenant, il est installé mais je ne sais pas comment l'exécuter. Un ami exécutant la même version d'Ubuntu n'a eu aucun problème à le faire démarrer après l'avoir installé de la même manière.

Voici ce que j'ai fait:

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

J'ai donc continué et:

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

Il convient de noter que je n'ai commencé à utiliser Linux qu'il y a quelques jours.

D'accord, j'ai donc réussi à installer la mise à jour apt-file et apt-file.

Cependant, nous avons touché un autre problème.

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.

Je l'ai fait, quand je le fais, il dit:

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

Ou

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

Je reçois toujours la même erreur lorsque j'essaie de lancer Psychonauts.

UsagiYojimbo
la source
1
sudo apt-get install libstdc++6
3ventic

Réponses:

20

Vous obtenez le message d'erreur:

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

parce que vous avez essayé d'installer un fichier libstdc++.so.6que vous ne pouvez pas installer, car il se trouve dans un paquet debian.

Vous pouvez utiliser apt-filepour rechercher le package qui contient ce fichier. Pour l'installer, tapez:

sudo apt-get install apt-file

Ensuite, vous devez mettre à jour l'index.

sudo apt-file update

Après cela, vous pouvez rechercher le package qui contient le fichier libstdc++.so.6:

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

Ensuite, vous trouverez de nombreux packages contenant le fichier recherché. Dans votre cas, le bon package est libstdc++6:

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

Ensuite, vous pouvez installer le package nécessaire:

sudo apt-get install libstdc++6
BuZZ-dEE
la source
D'accord, j'ai donc réussi à installer la mise à jour apt-file et apt-file. Cependant, nous avons touché un autre problème. usagiyojimbo @ Usagi: ~ $ sudo apt-file find libstdc ++. so.6 [sudo] mot de passe pour usagiyojimbo: E: Le cache est vide. Vous devez d'abord exécuter la «mise à jour du fichier apt».
UsagiYojimbo
Exécutez sudo apt-file updateet après cela sudo apt-file find libstdc++.so.6. Lisez la réponse ci-dessus exactement.
BuZZ-dEE
2
Je ne sais pas ce que j'ai fait différemment, mais la recherche de fichiers apt a fonctionné cette fois. Je reçois la liste des packages. Lorsque j'essaie de l'installer, il dit que libstdc ++ 6 est déjà la dernière version. Lorsque j'essaie de ./Psychonauts, il ne dit toujours pas un tel fichier ou répertoire.
UsagiYojimbo
Et si vous vous amusez avec du matériel 32 bits, assurez-vous de spécifier à la fin: sudo apt-get install libstdc ++ 6: i386
Ezekiel Kruglick
9

Je pense que Psychonauts est une application 32 bits. Vous devrez installer:

apt-get install lib32stdc++6
jhilmer
la source
C'est correct pour moi
Damián Rafael Lattenero
3

Vous y êtes presque, utilisez juste quelques caractères de plus que nécessaire:

sudo apt-get install libstdc++6

... devrait faire l'affaire.

Braiam
la source
0

Je vais partager avec vous la façon dont cela a fonctionné pour moi. Tout d'abord, vous devriez trouver si une autre copie de ce fichier est déjà sur votre machine:

$ locate libstdc++.so.6

le résultat:

/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

Comme vous pouvez le voir, il existe de nombreuses /snap/core/...versions de ce fichier. (sinon cette méthode ne fonctionne pas pour vous)

Vous devez effectuer une sauvegarde à partir du fichier existant:

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

Ensuite, vous pouvez remplacer la dernière version snap dans le fichier corrompu:

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

Essayez de réexécuter la commande souhaitée.

Saeed Falsafin
la source