web-dev-qa-db-ja.com

libstdc ++。so.5:共有オブジェクトファイルを開くことができません-しかし、ライブラリはインストールされており、最新です

私のクライアントは、開発者にLinuxサーバーで実行する小さなc ++コマンドラインアプリを作成してもらいました。サーバーの1つ(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

したがって、ライブラリはすでに存在し、最新です。通常、私にとってこれらのエラーはライブラリがないことを示しています。では、次にどこを見ればよいのでしょうか。

9
Jake Wilson

libstdc++-4.4.1-2.fc11.x86_64libstdc++.so.6をインストールします。 compat-libstdc++-33-3.2.3-66.x86_64を取得するには、libstdc++.so.5パッケージが必要です。 (シンボリックリンクしないでください!libstdc++.so.5libstdc++.so.6は互換性がありません。)

10
Ken Bloom

したがって、rpmは、共有ライブラリ名とそれらを提供するものについて認識しています。そう

yum install'libstdc ++。so.5 '

リポジトリに必要なものがあれば、それをインストールします。

あなたの場合、実行しようとしているバイナリが明らかに32ビットであるため、compat-libstdc ++-33-3.2.3-66.i586.rpmとその32ビットdepsがまだない場合は、それらをフェッチします。

14
anon

yum install compat-libstdc ++-33は私のためにこれを解決しました。

6
andymal

libstdc ++。so.5は、標準c ++ライブラリの非常に古いバージョンです。

yum search libstdc++、compat-libstdc ++パッケージの1つをインストールする必要があります。

3
nos

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を実行することで、正しいリポジトリがあるかどうかをいつでも確認できます。

1
RunThor

redHat 7でも私のために働いた:エラーは:

共有ライブラリのロード中にエラーが発生しました:libstdc ++。so.5:間違ったELFクラス:ELFCLASS32

解決策は:
yum install compat-libstdc++-33 libstdc++.so.5 -y

0

パッケージがlibstdc ++。so.5をインストールし、他のバージョンはインストールしないことを確認しましたか?それが最も可能性の高い問題です。

0
Timo Geusch