0

openssl 共有ライブラリに問題がある RHEL/CentOS 5 上の C++ バイナリのトラブルシューティングを行っています。私は C/C++ プログラミングをあまりしないので、根本的な問題を見つけるのに苦労しています。

/lib/libcrypto.so.6問題が発生しているように見えるのは、アプリケーションが および のシンボリック リンク パスではなく、特定のバージョンの libcryptoおよびlibssl (0.9.8) にリンクしていることです/lib/libssl.so.6。これがコンパイルされてから openssl ライブラリが更新されたため、現在は壊れています。

lddは、バイナリに関する次の 2 つの問題を示しています。

libcrypto.so.0.9.8 => not found
libssl.so.0.9.8 => not found

[編集] ソースを入手したところ、正しくビルドされました。可能な限り簡単な説明をしなければなりません.ビルドマシンは非標準ライブラリで誤って構成されており、メイクファイルは問題ありません.

4

2 に答える 2

0

D'oh、私はあなたが自分で構築していたバイナリのトラブルシューティングとして質問を誤解しました。


ldd your-binary実行時にロードするライブラリを確認するために使用できます。

意図的に別のバージョンをロードする場合は、ライブラリをロードするパスのリストについて、LD_LIBRARY_PATH環境とローダーの構成を確認する必要があります。/etc/ld.so.configまたは、リンクラインのスイッチを使用してローダーパスをバイナリにハードコーディングすることもでき-rpathます。Makefileでこれらを探してください。

于 2010-10-08T14:51:09.473 に答える
0

いくつかの提案 (ssl ライブラリの新しいバージョンにリンクする新しいバイナリを取得する方法がないと仮定しています):

  1. 以前のバージョンのパッケージから古いバージョンのライブラリを取得し、バイナリ用に保管しておきます (/usr/lib のどこかに置いて、LD_LIBRARY_PATH を使用してプログラム用にロードすることもできます)。

  2. LD_PRELOAD を使用してライブラリの新しいバージョンを強制的にロードし、バイナリに必要なすべてのシンボルがそこにあり、バイナリが実際に実行されることを願っています。これが機能する可能性は非常に低いですが、試してみる価値があります。

于 2010-10-08T15:47:58.813 に答える