web-dev-qa-db-ja.com

LD_DEBUGを含む式はどのように処理されますか?

LD_DEBUGの使用例は次のようになります。

LD_DEBUG=libs applicationName

LD_DEBUG = libsは単なる割り当てです-それで、bashでどのように機能するか(結果を出力する)?

2
Irbis

そのコンテキストでの_LD_DEBUG_は、libsの値を割り当てた環境変数です。これ自体は、開始したばかりのコマンドの環境に_LD_DEBUG_を配置する以外は何もしません。

動的にリンクされた実行可能ファイルを最初に起動すると、動的リンカーld.so(8)がランタイムリンクとシンボル解決を行います。これを行うダイナミックリンカのコードは、コンパイルされたコードと同様に、環境変数を読み取ることができます。このプログラムは、この環境変数や他の多くの変数を読み取り、それらに基づいて動作を変更します。マニュアルページには、ダイナミックリンカに影響を与えるすべての環境変数の詳細が記載されています。

2
casey

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

および関連するソースコード。

1
schily