«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-file и apt-file.

Однако тогда мы столкнулись с еще одной загадкой.

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

Я все еще получаю ту же ошибку при попытке запустить Psychonauts.

UsagiYojimbo
источник
1
sudo apt-get install libstdc++6
3

Ответы:

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
Базз-DEE
источник
Итак, мне удалось установить обновление apt-file и apt-file. Однако тогда мы столкнулись с еще одной загадкой. usagiyojimbo @ Usagi: ~ $ sudo apt-файл найти libstdc ++. so.6 [sudo] пароль для usagiyojimbo: E: Кеш пуст. Вам нужно сначала запустить «apt-file update».
UsagiYojimbo
Беги sudo apt-file updateи после этого sudo apt-file find libstdc++.so.6. Читайте выше, ответьте точно.
BuZZ-dEE
2
Не уверен, что я сделал по-другому, но поиск apt-файла сработал на этот раз. Я получаю список пакетов. Когда я пытаюсь установить, он говорит, что libstdc ++ 6 уже самая новая версия. Когда я пытаюсь ./Psychonauts он все еще говорит, что нет такого файла или каталога.
UsagiYojimbo
И если вы возитесь с 32-битным оборудованием, обязательно укажите в конце: sudo apt-get install libstdc ++ 6: i386
Иезекииль Круглик,
9

Я думаю, что Psychonauts - это 32-битное приложение. Вам нужно будет установить:

apt-get install lib32stdc++6
jhilmer
источник
Это правильно для меня
Damián Rafael Lattenero
3

Вы почти у цели, просто использовали на несколько символов больше, чем нужно:

sudo apt-get install libstdc++6

... должен сделать свое дело.

Braiam
источник
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

Попробуйте запустить нужную команду еще раз.

Саид Фальсафин
источник