シンボルが未定義になっていることを確認します。それでは、ここからが本題です。実行すると、裏方でダイナミックリンカーローダ(ld-linux.so.2)が起動され、最終リンクを完成させるのでした。呼ばれる環境変数が定義されていると、指定されたファイルを先に探索するような仕掛けが組み込まれているのです。定義されていると、記述されている共有オブジェクトを先にメモリー上にロードし、シンボル探索を行います。することが可能になるのです。関数を用意してみましょう(puts.c)。関数を用いて引数のメッセージを標準エラー出力(ファイルディスクリプター2番)に出力しています。共有オブジェクトファイルを生成してみましょう。対してふたつのオプションを指定します。略であり、日本語に訳すと位置独立型実行コードを意味しています。名前の通り共有オブジェクトファイルを出力するためのオプションです。Object)が指定されます。共有オブジェクトの概念を理解するためには、機械語の知識が必要になりますので、詳細は割愛しますが、当面はふたつのオプションを定型句として覚えておきましょう。忘れないようにしてください。ロードエラーとなります。見事に成功しています。よってプロセスが全く違う挙動を示すことは、不思議な気もしますが、これこそが動的リンクの裏側でダイナミックリンカーローダが活躍している証拠です。ひな形を作ることは簡単です。関数を作成してみましょう(malloc_dumb.c)。}わずか3行のプログラムであり、説明の必要もありません。先ほどと同じように、共有オブジェクトを作成します。エラーが表示されました。呼び出し履歴を引数と共に観察してみたいものです。呼び出している場合への配慮です。呼び出された際の引数を表示し、呼び出し元にゼロを返すだけの簡単なプログラムですが、大変面白い実験を行うことができます(引数を表示している点がミソです)。