"Libstdc ++. So.6: no se puede abrir el archivo de objeto compartido: No existe tal archivo o directorio"

10

Luché con el programa de acuerdo con la información en esta pregunta . Ahora está instalado pero no puedo entender cómo ejecutarlo. Un amigo que ejecuta la misma versión de Ubuntu no tuvo problemas para iniciarlo después de instalarlo de la misma manera.

Esto es lo que he hecho:

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

Así que seguí adelante y:

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

Cabe señalar que solo comencé a usar Linux hace unos días.

Bien, logré instalar apt-file y apt-file update.

Sin embargo, entonces llegamos a otro inconveniente.

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.

He hecho eso, cuando lo hago 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

Todavía recibo el mismo error cuando intento ejecutar Psychonauts.

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

Respuestas:

20

Recibes el mensaje de error:

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

porque trató de instalar un archivo libstdc++.so.6que no puede instalar, porque está ubicado en un paquete debian.

Puede usar apt-filepara buscar el paquete que contiene ese archivo. Para instalarlo, escriba:

sudo apt-get install apt-file

Luego tienes que actualizar el índice.

sudo apt-file update

Después de eso, puede buscar el paquete que contiene el archivo libstdc++.so.6:

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

Luego encontrará muchos paquetes que contienen el archivo buscado. En su caso, el paquete correcto es libstdc++6:

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

Luego puede instalar el paquete necesario:

sudo apt-get install libstdc++6
BuZZ-dEE
fuente
Bien, logré instalar apt-file y apt-file update. Sin embargo, entonces llegamos a otro problema. usagiyojimbo @ Usagi: ~ $ sudo apt-file find libstdc ++. so.6 [sudo] contraseña para usagiyojimbo: E: el caché está vacío. Primero debe ejecutar 'apt-file update'.
UsagiYojimbo
Corre sudo apt-file updatey después de eso sudo apt-file find libstdc++.so.6. Lea la respuesta anterior exactamente.
BuZZ-dEE
2
No estoy seguro de lo que hice de manera diferente, pero esta vez funcionó apt-file find. Me sale la lista de paquetes. Cuando intento instalarlo, dice que libstdc ++ 6 ya es la versión más nueva. Cuando trato de ./Psychonauts todavía dice que no hay tal archivo o directorio.
UsagiYojimbo
Y si está jugando con hardware de 32 bits, asegúrese de especificar al final: sudo apt-get install libstdc ++ 6: i386
Ezekiel Kruglick
9

Creo que Psychonauts es una aplicación de 32 bits. Necesitará instalar:

apt-get install lib32stdc++6
jhilmer
fuente
Eso es correcto para mí
Damián Rafael Lattenero
3

Ya casi estás allí, solo usaste algunos caracteres más de los que necesitabas:

sudo apt-get install libstdc++6

... debería hacer el truco.

Braiam
fuente
0

Compartiré contigo la forma en que funcionó para mí. En primer lugar, debe encontrar si hay alguna otra copia de este archivo en su máquina:

$ locate libstdc++.so.6

La salida:

/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

Como puede ver, hay muchas /snap/core/...versiones de este archivo. (si no, este método no funciona para ti)

Debería hacer una copia de seguridad del archivo existente:

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

Luego puede reemplazar la última versión instantánea en el archivo dañado:

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

Intente ejecutar el comando deseado nuevamente.

Saeed Falsafin
fuente