内部に隠されています。動的リンクというのは、最終的なリンク作業が、実行時に行われることを意味しています。オプションは、オブジェクトファイル中の未定義シンボルを表示するためのものです。外部参照しており、このふたつのシンボルのリンクは現時点で完了していないことが分かります。コマンドで必要な情報のみを残しておきましょう。Dependency)コマンドで知ることができます。完成済みのプログラム次に、動的リンクの対極に位置する、静的リンクについて見てみましょう。オプションを指定します。バイトにも及んでいます。これほどのサイズ差が生じるのかについては、場を改めて解説いたします。単独で完成したプログラムファイルであることが分かります。これは、他者の助けを借りず、自力で起動できるプログラムであることを意味しています。内部に、未定義シンボルは存在しません。外部プログラムの助けを借りている様子は、伺うことができません。プログラムを解析してみてください。いうヘッダーに注目してください。必要としていることを意味しています。ページに記載されている通り、ダイナミック・リンカーローダは、プログラムが必要とする外部ライブラリ(共有ライブラリ)をメモリ上にロードし、未完成プログラムの実行前に最終リンクを行います。プログラムヘッダーはどのような構造になっているのでしょうか。ヘッダーは登録されていませんでした。ダイナミック・リンカーローダの挙動を掴むダイナミック・リンカーローダは黒子として、私達の目が届かない裏方でひっそりと作業していることになります。なると、一目その姿を見てみたい・・というのが、人情。TRACE)コマンドの登場です。指定されたプログラム内部で実行されるシステムコールの呼び出し状況を引数付きで、つぶさに解析するためのシステムツールです。システムコールに対応します。ファイルへのアクセスが行われています。外部ファイルへアクセスしていませんので、これらはダイナミック・リンカーローダの仕業であることが分かります。作業しているようです。再度参照してみてください。normally.外部からダイナミック・リンカーローダを制御するために、いくつかの環境変数が用意されています。定義されていると、ダイナミック・リンカーローダはリンク処理を行わず、対象プログラムが依存している外部ファイルのリストのみを表示して終了します。上で、起動プロセスに対して一時的に環境変数を指定する場合は、このようにコマンドの前に記述します。伝えられ、外部依存リストのみを表示して、終了します。この出力リストに見覚えはないでしょうか。コマンドの出力と全く同じですね。定義して、対象プログラムを実行しています。/sbin/initダイナミック・リンカーローダの仕組みを理解し、その存在を意識できるようになると、途端に心配事が雨雲のように頭の中を広がり、夜も眠れなくなってしまう方もいらっしゃることでしょう。「動的リンクを受けたプログラム群の生命線は、外部ライブラリはもちろんのこと、ダイナミック・リンカーローダである。この生命線が絶たれてしまったら、私のサーバーどうなっちゃうの?!」これは、システム管理者として極めて正しい直感と言えます。解析しようとすると、アクセス拒否を受けます。許可されていない点に注目)。おいて、ファイルパーミッションは単なる飾りではなく、長年にわたる失敗と経験に基づいた、最良の設定が施されています。「失敗することを知っている」のです。静的リンクで作成されているため、万が一Cライブラリやダイナミック・リンカーローダに障害が発生したとしても、影響は一切受けないことが分かります。コマンドも、同じく静的リンクで作成されています。システム起動に必要な基幹ツールはすべて静的リンクで作成されているため、仮にCライブラリやダイナミック・リンカーローダに致命的な障害が発生したとしても、最低限の環境で再起動することができるのです。似ても似つかぬものとなっています。プログラムが、動的リンクで作成されています。用いてセキュリティ強化を計っているようですが、これでは本末転倒ではないでしょうか。コマンドなどもすべて動的リンクで作成されているため、先ほどの心配にもあった通り、Cライブラリやダイナミック・リンカーローダのアップデートに失敗したり、障害が発生すれば、二度とシステムが起動することはありません。段階でハングアップしてしまうからです。違い今回は、動的リンクの仕組みを簡単にご紹介しましたが、技術に対する理解が深まると様々なことが見えてきます。私達は、自分が置かれた環境を中心として世界観を構築しがちですが、たまには住み慣れた世界を離れ、新世界を探訪することも良いものです。欠けている危機意識と謙虚さ、そして用心深さを教えてくれることでしょう。つづく当初の予想を超えて、その3に突入です。