"Libstdc ++. So.6: не вдається відкрити спільний файл об'єкта: такого файлу чи каталогу немає"


10

Я загрався з програмою відповідно до інформації в цьому питанні . Тепер він встановлений, але я не можу зрозуміти, як його запустити. У друга, який працює з тією ж версією Ubuntu, не було проблем з тим, щоб запустити його після встановлення таким же чином.

Це те, що я зробив:

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

Тому я пішов вперед і:

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

Слід зазначити, що я почав використовувати Linux лише кілька днів тому.

Гаразд, тому мені вдалося встановити apt-файл та apt-оновлення файлів.

Однак тоді ми вдарили ще одного корча.

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.

Я це зробив, коли це роблю:

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

Або

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

Я все ще отримую ту саму помилку, коли намагаюся запускати Психонавтів.


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

Відповіді:


20

Ви отримуєте повідомлення про помилку:

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

тому що ви намагалися встановити файл, libstdc++.so.6який ви не можете встановити, оскільки він знаходиться в пакеті debian.

Ви можете apt-fileшукати пакет, який містить цей файл. Щоб встановити його, введіть:

sudo apt-get install apt-file

Тоді вам доведеться оновити індекс.

sudo apt-file update

Після цього ви можете шукати пакет, який містить файл libstdc++.so.6:

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

Тоді ви знайдете безліч пакетів, що містять шуканий файл. У вашому випадку правильний пакет libstdc++6:

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

Потім ви можете встановити необхідний пакет:

sudo apt-get install libstdc++6

Гаразд, тому мені вдалося встановити apt-файл та apt-оновлення файлів. Однак тоді ми вдарили ще одного корча. usagiyojimbo @ Usagi: ~ $ sudo apt-file find libstdc ++. so.6 [sudo] пароль для usagiyojimbo: E: Кеш порожній. Спочатку потрібно запустити "оновлення apt-файлів".
UsagiYojimbo

Біжи sudo apt-file updateі після цього sudo apt-file find libstdc++.so.6. Прочитайте вище відповідь точно.
BuZZ-dEE

2
Не впевнений, що я зробив по-іншому, але це apt-file знаходження спрацювало цього разу. Я отримую список пакетів. Коли я намагаюся встановити, він каже, що libstdc ++ 6 - це вже найновіша версія. Коли я намагаюся ./Psychonauts, він все ще говорить, що такого файлу чи каталогу немає.
UsagiYojimbo

А якщо ви заплутуєтесь з 32-розрядним обладнанням, обов’язково вкажіть в кінці: sudo apt-get install libstdc ++ 6: i386
Ezekiel Kruglick


3

Ви майже там, просто використали ще кілька символів, ніж вам потрібно:

sudo apt-get install libstdc++6

... повинен зробити трюк.


0

Я поділюся з вами способом, який працював на мене. Перш за все, ви повинні дізнатися, чи якась інша копія цього файлу вже є на вашій машині:

$ locate libstdc++.so.6

вихід:

/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

Як бачите, існує багато /snap/core/...версій цього файлу. (якщо ні, цей метод не працює для вас)

Вам слід створити резервну копію з існуючого файлу:

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

Тоді ви можете замінити останню оснащену версію на пошкоджений файл:

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

Спробуйте запустити потрібну команду ще раз.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.