"Libstdc ++. So.6: impossibile aprire il file oggetto condiviso: nessun file o directory del genere"


10

Ho lottato con il programma in base alle informazioni in questa domanda . Ora è installato ma non riesco a capire come eseguirlo. Un amico che esegue la stessa versione di Ubuntu non ha avuto problemi a avviarlo dopo averlo installato allo stesso modo.

Questo è quello che ho fatto:

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

Quindi sono andato avanti e:

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

Va notato che ho iniziato a usare Linux solo pochi giorni fa.

Ok, quindi sono riuscito a installare l'aggiornamento del file apt e del file apt.

Tuttavia, poi abbiamo colpito un altro intoppo.

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.

L'ho fatto, quando lo faccio dice:

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

O

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

Ricevo ancora lo stesso errore quando provo a eseguire Psychonauts.


1
sudo apt-get install libstdc++6
3ventic

Risposte:


20

Viene visualizzato il messaggio di errore:

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

perché hai provato a installare un file libstdc++.so.6che non puoi installare, perché si trova in un pacchetto debian.

È possibile utilizzare apt-fileper cercare il pacchetto che contiene quel file. Per installarlo, digitare:

sudo apt-get install apt-file

Quindi devi aggiornare l'indice.

sudo apt-file update

Successivamente, è possibile cercare il pacchetto che contiene il file libstdc++.so.6:

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

Quindi trovi molti pacchetti che contengono il file cercato. Nel tuo caso, il pacchetto corretto è libstdc++6:

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

Quindi è possibile installare il pacchetto necessario:

sudo apt-get install libstdc++6

Ok, quindi sono riuscito a installare l'aggiornamento del file apt e del file apt. Tuttavia, poi abbiamo colpito un altro intoppo. usagiyojimbo @ Usagi: ~ $ sudo apt-file trova libstdc ++. so.6 [sudo] password per usagiyojimbo: E: La cache è vuota. Devi prima eseguire "aggiornamento file apt".
UsagiYojimbo,

Corri sudo apt-file updatee dopo sudo apt-file find libstdc++.so.6. Leggi la risposta sopra esattamente.
BuZZ-dEE,

2
Non sono sicuro di cosa ho fatto diversamente, ma questa volta apt-file ha funzionato. Ottengo l'elenco dei pacchetti. Quando provo a installarlo, dice che libstdc ++ 6 è già la versione più recente. Quando provo a ./Psychonauts continua a non indicare tale file o directory.
UsagiYojimbo,

E se stai scherzando con l'hardware a 32 bit, assicurati di specificare alla fine: sudo apt-get install libstdc ++ 6: i386
Ezekiel Kruglick


3

Ci sei quasi, hai usato solo pochi personaggi in più del necessario:

sudo apt-get install libstdc++6

... dovrebbe fare il trucco.


0

Condividerò con te il modo in cui ha funzionato per me. Prima di tutto dovresti scoprire se qualsiasi altra copia di questo file è già sul tuo computer:

$ locate libstdc++.so.6

Il risultato:

/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

Come puoi vedere ci sono molte /snap/core/...versioni di questo file. (in caso contrario, questo metodo non funziona per te)

Dovresti fare un backup dal file esistente:

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

Quindi è possibile sostituire l'ultima versione dello snap nel file danneggiato:

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

Il tentativo di eseguire nuovamente il comando desiderato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.