リンケージエディタ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/09/22 18:07 UTC 版)
リンクの種類
静的リンク
静的リンクは、リンク時に他のオブジェクトやライブラリをすべて1つのファイルに結合する方法。この方法では、出来上がったプログラムは、単独で動作することができる。単独で動作させなければならない組み込み向けプログラムなどでよく使われる。必要とされるすべてのライブラリを組み込むため、出来上がったプログラムはその分だけ大きくなる。
動的リンク
動的リンクは、リンク時にライブラリの参照を名前のみで解決してプログラムを作る方法。出来上がったプログラムにはライブラリの部分のプログラムは含まれないのが特徴である。そのプログラム実行時に、ライブラリ空間上の実際のプログラムと結合し、実行する(この作業は通常ローダと呼ばれるプログラムが行う)。出来上がったプログラムの大きさが小さくなる、プログラムを再度リンクしなくてもライブラリだけ入れ替えることができるなどの利点があり、現在広く使われている。
C言語の標準ランタイムライブラリのような汎用ライブラリは動的リンクするものの、ユーザー定義のライブラリは静的リンクする、あるいは汎用ライブラリは静的リンクするものの、ユーザー定義のライブラリは動的リンクする、両方動的リンクする、両方静的リンクする、といった組み合わせがあり、用途によって使い分けることもある。
リンクの処理(静的リンク)
静的リンクでは、おおむね以下の処理が行われる。
- ファイルの連結
- 分割コンパイルによってオブジェクトファイルが複数ある場合、連結して単体のファイルとする。
- ライブラリ内のファイルの連結
- ライブラリの関数を呼び出している場合は、ライブラリ内のオブジェクトファイルも連結される。
- OS固有コードの追加
- OSによって決められたスタートアップコードやメタ情報を追加する。
- アドレスの解決
- ソース内で使用した関数や変数の名前は、最終的にはすべてメモリアドレスに置き換えられる。リロケータブルなプログラムではこれはプログラム先頭等からの相対アドレスとなるが、プログラム全体のサイズがわかるまでは相対アドレスを決定する事はできないため、この処理はリンク時に実施される。
リンクの処理(動的リンク)
動的リンクにおいては、ローダをなんらかの方法で実行ファイルに加えなければならない。
- あらかじめ用意されているローダを静的リンクする。プログラマから見ると、インポートライブラリの静的リンクやリンケージエディタのオプション設定等の形となる。
- プログラマが、API等を直接呼び出してローダのコードを書く(この方式ではリンケージエディタは動的リンクに関与しない)。
リンケージエディタと同じ種類の言葉
- リンケージエディタのページへのリンク