LD_DEBUGの使用例は次のようになります。
LD_DEBUG=libs applicationName
LD_DEBUG = libsは単なる割り当てです-それで、bashでどのように機能するか(結果を出力する)?
そのコンテキストでの_LD_DEBUG
_は、libs
の値を割り当てた環境変数です。これ自体は、開始したばかりのコマンドの環境に_LD_DEBUG
_を配置する以外は何もしません。
動的にリンクされた実行可能ファイルを最初に起動すると、動的リンカーld.so(8)
がランタイムリンクとシンボル解決を行います。これを行うダイナミックリンカのコードは、コンパイルされたコードと同様に、環境変数を読み取ることができます。このプログラムは、この環境変数や他の多くの変数を読み取り、それらに基づいて動作を変更します。マニュアルページには、ダイナミックリンカに影響を与えるすべての環境変数の詳細が記載されています。
LD_DEBUGは、ld.so.1(ELFバイナリから呼び出されるダイナミックリンカー)で評価されます。
ダイナミックリンカのマニュアルページを確認してください。
http://schillix.sourceforge.net/man/man1/ld.so.1.1.html
シェルでは何も実行されず、実行されたバイナリによってすべてが実行されます。
ところで、コマンドldd
は特別なことは何もしません。ただ、いくつかのLD_ *変数を設定してから、コマンドを開始しようとします。オプションが指定されていない場合、lddはLD_TRACE_LOADED_OBJECTS_[AE]
を設定するだけです。を参照してください。
http://schillix.sourceforge.net/man/man1/ldd.1.html
および関連するソースコード。