“Libstdc ++. So.6: não é possível abrir o arquivo de objeto compartilhado: esse arquivo ou diretório não existe”


10

Eu lutei com o programa de acordo com as informações nesta pergunta . Agora ele está instalado, mas não consigo descobrir como executá-lo. Um amigo executando a mesma versão do Ubuntu não teve problemas para iniciar o processo após a instalação da mesma maneira.

Isto é o que eu fiz:

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

Então eu fui em frente 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'

Deve-se notar que eu comecei a usar o Linux apenas alguns dias atrás.

Ok, então consegui instalar o apt-file e a atualização do arquivo apt.

No entanto, atingimos outro obstáculo.

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.

Eu fiz isso, quando faço isso diz:

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

Ainda estou recebendo o mesmo erro ao tentar executar o Psychonauts.


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

Respostas:


20

Você recebe a mensagem de erro:

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

porque você tentou instalar um arquivo libstdc++.so.6que não pode ser instalado, porque está localizado em um pacote debian.

Você pode usar apt-filepara procurar o pacote que contém esse arquivo. Para instalá-lo, digite:

sudo apt-get install apt-file

Então você precisa atualizar o índice.

sudo apt-file update

Depois disso, você pode procurar o pacote que contém o arquivo libstdc++.so.6:

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

Então você encontra muitos pacotes que contêm o arquivo pesquisado. No seu caso, o pacote correto é libstdc++6:

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

Então você pode instalar o pacote necessário:

sudo apt-get install libstdc++6

Ok, então consegui instalar o apt-file e a atualização do arquivo apt. No entanto, atingimos outro obstáculo. usagiyojimbo @ Usagi: ~ $ sudo apt-file encontra a libstdc ++. so.6 [sudo] senha para usagiyojimbo: E: O cache está vazio. Você precisa executar 'apt-file update' primeiro.
precisa saber é o seguinte

Corra sudo apt-file updatee depois disso sudo apt-file find libstdc++.so.6. Leia a resposta acima exatamente.
precisa saber é o seguinte

2
Não tenho certeza do que fiz de forma diferente, mas o arquivo apt-find funcionou desta vez. Eu recebo a lista de pacotes. Quando tento instalar, o libstdc ++ 6 já é a versão mais recente. Quando tento ./Psychonauts, ele ainda diz que não existe esse arquivo ou diretório.
precisa saber é o seguinte

E se você está brincando com hardware de 32 bits, certifique-se especificar no final: sudo apt-get install libstdc ++ 6: i386
Ezequiel Kruglick


3

Você está quase lá, apenas usou mais alguns caracteres do que o necessário:

sudo apt-get install libstdc++6

... deve fazer o truque.


0

Vou compartilhar com você a maneira que funcionou para mim. Antes de tudo, você deve descobrir se alguma outra cópia deste arquivo já está em sua máquina:

$ locate libstdc++.so.6

a saída:

/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 você pode ver, existem muitas /snap/core/...versões deste arquivo. (caso contrário, este método não funciona para você)

Você deve fazer um backup do arquivo existente:

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

Em seguida, você pode substituir a versão mais recente do snap no arquivo corrompido:

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

A tentativa de executar o comando desejado novamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.