今日、前のプロジェクトを構成したときに、いくつかのダイナミックリンクライブラリが変更されていることに気付きました。アプリケーションで現在使用されているダイナミックリンクライブラリを確認したいので、さらにいくつかの情報を確認しました。
以下に、Linuxダイナミックリンクライブラリの検索方法とダイナミックリンクライブラリの場所の構成のプロセスを記録します。
LIBRARY_PATHとLD_LIBRARY_PATHの違い:(参照リンク)
LIBRARY_PATHは、コンパイル前にgccによって使用され、プログラムにリンクする必要のある静的ライブラリと共有ライブラリを含むディレクトリを検索します。 LD_LIBRARY_PATHは、正常にコンパイルおよびリンクされた後、共有ライブラリを含むディレクトリを検索するためにプログラムによって使用されます。
以下に示すように、ライブラリは静的または共有にすることができます。静的な場合、コードはプログラムにコピーされ、プログラムがコンパイルおよびリンクされた後にライブラリを検索する必要はありません。ライブラリが共有されている場合LD_LIBRARY_PATH
は、プログラムに動的にリンクする必要があります 。
LD_LIBRARY_PATHとLD_RUN_PATHの違い:(参照リンク)
LD_RUN_PATHが使用されているため、リンク時間LD_LIBRARY_PATHが使用されている一方で図書館の解像度のための実行時ライブラリの解像度。LD_RUN_PATHリンク時と実行時の両方でライブラリを検索するディレクトリを指定します。 LD_LIBRARY_PATHはコロン区切りのパスを検索するダイナミックローダに指示するためのライブラリがバイナリを実行するために必要。LD_RUN_PATHはどこを見れ先を指定するためにリンカによって使用されるためにのみ、実行時にライブラリの時間。これは、このパスのセットがリンク時間中に検索されないという点で、LD_LIBRARY_PATHとはわずかに異なります。
ダイナミックリンクライブラリの検索パスの構成:
1.上記のLD_LIBRARY_PATHなどの環境変数を使用して構成でき ます。
2. /etc/ld.so.confグローバル構成ファイルを使用して、ダイナミックリンクライブラリの実行中に検索パスを構成できます。次に、ldconfigコマンドを使用して/etc/ld.so.confをld.soにロードします。キャッシュ(root権限が必要);
3.次に、ldconfig -p | grep "your lib"を使用して、必要なダイナミックリンクライブラリの場所を見つけます。
4.既存のプログラムの場合、ldd "your bin"を使用して、現在のプログラムに必要なリンクライブラリを直接表示できます。
更新を続けてください、再版のソースを示してください;より多くの内容については、cnblogs.com / xuyaowenに従ってください;
/etc/ld.so.conf.d/x86_64-linux-gnu.conf、マルチアーキテクチャサポート構成、例としてx86_64を取り上げます。
#マルチアーチサポート / usr / local / lib / x86_64-linux- gnu / lib / x86_64-linux- gnu / usr / lib / x86_64-linux-gnu
更新を続けます。