ライブラリのロードを追跡する方法は?

ライブラリのロードを追跡する方法は?

私のプログラムは、システムにインストールされているlibboost 1.67に接続されたライブラリに依存しています。起動すると、libboost_system.so.1.58存在しないエラーが発生します。LD_PRELOADそしてLD_LIBRARY_PATH設定されていません。

lddtree実行時にこのライブラリは依存関係として表示されませんが、表示されlddます。

このライブラリが必要な場所をどのように追跡できますか?

答え1

GNUシステムの場合は、次のコマンドを使用してアプリケーションを実行してみてください。

LD_DEBUG=libs your-application

その他のオプションについては、リソースを参照するLD_DEBUG=helpman ld.so、 。

答え2

プログラムがdlopen()を使用してlibboost_systemを手動でロードする場合は、次のようにしてこれを行う場所を見つけることができます。dlopen() を呼び出すことを確認してください。 dlopen()が呼び出されると、gdbはブレークポイントを設定してスタックトレースを生成することもできます。 (あなたも見ることができますラトラス.)

関連情報