0

私の状況をさらに説明するために。動的ライブラリを使用している場合は、ライブラリ パスを LD_LIBRARY_PATH にエクスポートして、実行時に実行可能ファイルがライブラリを検出できるようにする必要があることを知っています。これを行わないと、共有ライブラリが見つからないというエラーが表示されます。

次のリンカ フラグ「-L/path/to/library/ -lthelibrary.so」を追加すると、ライブラリ パスを LD_LIBRARY_PATH にエクスポートせずに実行可能ファイルを実行できます。

どうしてこれなの?

4

1 に答える 1

0

まず、通常、バイナリを実行するように設定する必要はありません。LD_LIBRARY_PATHこの環境変数は、ローダーがバイナリの実行時にロードするファイルを探す追加の場所を見つけるために使用されます。.so

バイナリが、コンパイルされたときと同じ場所にない1 つ以上のファイルを参照するかどうかを設定する必要があります。直接参照されるファイルのいずれかが、ファイルの作成時と同じように利用できないものに依存している場合にも必要です。LD_LIBRARY_PATH.so.so.so

コマンドを使用lddしてバイナリの依存関係情報を調べ、バイナリの作成時にリンカーによって保存される内容をより明確に把握します。

于 2012-08-31T15:10:48.597 に答える