もう一つリンクの重要な役割は,参照しているアドレスの確定である。コンパイルした結果は,実行モジュールのどの位置に配置されるか決まっていない。逆に言えば場所を変更できる,つまり再配置可能な状態にある。これをリロケータブル・オブジェクトと呼ぶ注3)。UNIXでは「.o」,Windowsでは「.obj」という拡張子で表現されることが多い。 リロケータブル・オブジェクトは,複数の実行モジュールで使われることがある。実行モジュールのどの位置を占めるかは,プログラムによって違う。しかし実行モジュールとして完成させるには,位置が決まっていなければならない。プログラムの中の位置を確定させることが,リンクのもう一つの作業である(図5[拡大表示])。リロケータブル・オブジェクトの状態では,サブルーチンやデータなどの位置を名前で参照できるようになっている。実行モジュールでは,基本的に名前ではなくアドレスで参照す
![先輩教えて!プログラミングのabc(第1回)---コンパイルとビルドって何が違うの(中)](https://cdn-ak-scissors.b.st-hatena.com/image/square/bed39b5962a5d552c95b6d796db8f55e72d32943/height=288;version=1;width=512/https%3A%2F%2Fxtech.nikkei.com%2Fimages%2Fn%2Fxtech%2F2020%2Fogp_nikkeixtech_hexagon.jpg%3F20220512)