libstdc ++. so.5: не удается открыть общий объектный файл - но библиотека установлена ​​и обновлена - PullRequest
9 голосов
/ 17 сентября 2010

Мой клиент попросил одного разработчика написать небольшое приложение командной строки c ++ для запуска на своих серверах Linux. На одном из серверов (под управлением Fedora 11) при запуске приложения появляется следующая ошибка:

error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

Очевидно, первое, что я сделал, было

yum install libstdc++

Но я получаю

Package libstdc++-4.4.1-2.fc11.x86_64 already installed and latest version

Таким образом, библиотека уже существует и обновлена. Обычно для меня эти ошибки указывают на отсутствующую библиотеку. Так, где я должен смотреть дальше?

Ответы [ 6 ]

14 голосов
/ 17 сентября 2010

об / мин, следовательно, репо знает об именах разделяемых библиотек и о том, что их предоставляет.Так что

yum install 'libstdc++.so.5'

установит все необходимое, если оно есть в репо.

В вашем случае это вызовет compat-libstdc ++ - 33-3.2.3-66.i586.rpm и его 32-битные утилиты, если у вас их еще нет, потому что бинарный файл, который вы пытаетесь запустить, по-видимому, 32-битный

10 голосов
/ 17 сентября 2010

libstdc++-4.4.1-2.fc11.x86_64 устанавливает libstdc++.so.6.Вам нужен пакет compat-libstdc++-33-3.2.3-66.x86_64, чтобы получить libstdc++.so.5.(Не используйте символические ссылки! libstdc++.so.5 и libstdc++.so.6 несовместимы.)

6 голосов
/ 15 января 2014

yum install compat-libstdc ++ - 33 решил это за меня.

3 голосов
/ 17 сентября 2010

libstdc ++. So.5 - очень старая версия стандартной библиотеки c ++.

Сделайте yum search libstdc++, вам придется установить один из пакетов compat-libstdc ++.

1 голос
/ 05 января 2017

Как заявили caf и aaron, запуск yum install compat-libstdc++-33 libstdc++.so.5 -y сработал для меня, когда я получил похожую ошибку.

Единственный улов, с которым я столкнулся, заключался в том, что у меня не было правильного репо, поэтому мне пришлось запустить yum-config-manager --enable rhel-7-server-optional-rpms для доступа к файлам. Если вы используете что-то отличное от RedHat 7, вам нужно будет найти правильный репо.

Вы всегда можете проверить правильность репо, выполнив сначала yum provides libstdc++.so.5.

0 голосов
/ 17 сентября 2010

Вы проверили, что пакет устанавливает libstdc ++. So.5, а не какую-то другую версию? Это ваша наиболее вероятная проблема.

...