„Libstdc ++. So.6: nie można otworzyć pliku obiektu współdzielonego: brak takiego pliku lub katalogu”

10

Zmagałem się z programem zgodnie z informacjami zawartymi w tym pytaniu . Teraz jest zainstalowany, ale nie wiem, jak go uruchomić. Znajomy korzystający z tej samej wersji Ubuntu nie miał problemów z uruchomieniem go po zainstalowaniu go w ten sam sposób.

Oto co zrobiłem:

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

Więc poszedłem do przodu i:

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

Należy zauważyć, że zacząłem używać Linuksa dopiero kilka dni temu.

Okej, więc udało mi się zainstalować apt-file i apt-file update.

Jednak potem trafiliśmy na kolejną przeszkodę.

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.

Zrobiłem to, kiedy to robię, mówi:

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

Lub

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

Nadal pojawia się ten sam błąd, gdy próbuję uruchomić Psychonautów.

UsagiYojimbo
źródło
1
sudo apt-get install libstdc++6
3ventic

Odpowiedzi:

20

Pojawia się komunikat o błędzie:

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

ponieważ próbowałeś zainstalować plik libstdc++.so.6, którego nie możesz zainstalować, ponieważ znajduje się on w pakiecie debian.

Możesz użyć apt-filedo wyszukania pakietu zawierającego ten plik. Aby go zainstalować, wpisz:

sudo apt-get install apt-file

Następnie musisz zaktualizować indeks.

sudo apt-file update

Następnie możesz wyszukać pakiet, który zawiera plik libstdc++.so.6:

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

Następnie znajdziesz wiele pakietów, które zawierają szukany plik. W twoim przypadku poprawny pakiet to libstdc++6:

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

Następnie możesz zainstalować potrzebny pakiet:

sudo apt-get install libstdc++6
BuZZ-dEE
źródło
Okej, więc udało mi się zainstalować apt-file i apt-file update. Jednak potem trafiliśmy na kolejną przeszkodę. usagiyojimbo @ Usagi: ~ $ sudo apt-file find libstdc ++. so.6 [sudo] hasło dla usagiyojimbo: E: Pamięć podręczna jest pusta. Najpierw musisz uruchomić „aktualizację pliku apt”.
UsagiYojimbo
Uruchom sudo apt-file updatei potem sudo apt-file find libstdc++.so.6. Przeczytaj powyższą odpowiedź dokładnie.
BuZZ-dEE
2
Nie jestem pewien, co zrobiłem inaczej, ale tym razem apt-file find zadziałało. Dostaję listę paczek. Kiedy próbuję zainstalować, mówi, że libstdc ++ 6 jest już najnowszą wersją. Kiedy próbuję ./Psychonauts nadal mówi, że nie ma takiego pliku lub katalogu.
UsagiYojimbo
A jeśli masz problemy z 32-bitowym sprzętem, pamiętaj, aby podać na końcu: sudo apt-get install libstdc ++ 6: i386
Ezekiel Kruglick
9

Myślę, że Psychonauts to aplikacja 32-bitowa. Musisz zainstalować:

apt-get install lib32stdc++6
jhilmer
źródło
To dla mnie poprawne
Damián Rafael Lattenero
3

Jesteś prawie na miejscu, użyłeś tylko kilku znaków więcej niż potrzebujesz:

sudo apt-get install libstdc++6

... powinien załatwić sprawę.

Braiam
źródło
0

Podzielę się z Tobą sposobem, który dla mnie zadziałał. Przede wszystkim powinieneś sprawdzić, czy jakaś inna kopia tego pliku jest już na twoim komputerze:

$ locate libstdc++.so.6

wyjście:

/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

Jak widać, istnieje wiele /snap/core/...wersji tego pliku. (jeśli nie, ta metoda nie działa dla ciebie)

Należy wykonać kopię zapasową z istniejącego pliku:

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

Następnie możesz zastąpić najnowszą wersję przystawki uszkodzonym plikiem:

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

Spróbuj ponownie uruchomić żądane polecenie.

Saeed Falsafin
źródło