リンケージエディタリンケージエディタ(英: linkage editor)またはリンカ(英: linker)とは、機械語のプログラムの断片を結合し実行可能なプログラムを作成するプログラムのことである。例として、C言語では、ソースファイルをコンパイルするとオブジェクトファイルが生成される。それに他のオブジェクトファイルやライブラリを結合して1つの実行可能なプログラム(実行可能ファイル)が完成する。この結合(リンク)の際リンケージエディタが使われる。 日本語では「連係編集プログラム」[1]とも訳される。 リンクの種類静的リンク静的リンクは、リンク時に他のオブジェクトやライブラリをすべて1つのファイルに結合する方法。この方法では、出来上がったプログラムは、単独で動作することができる。単独で動作させなければならない組み込み向けプログラムなどでよく使われる。必要とされるすべてのライブラリを組み込むため、出来上がったプログラムはその分だけ大きくなる。 動的リンク動的リンクは、リンク時にライブラリの参照を名前のみで解決してプログラムを作る方法。出来上がったプログラムにはライブラリの部分のプログラムは含まれないのが特徴である。そのプログラム実行時に、ライブラリ空間上の実際のプログラムと結合し、実行する(この作業は通常ローダと呼ばれるプログラムが行う)。出来上がったプログラムの大きさが小さくなる、プログラムを再度リンクしなくてもライブラリだけ入れ替えることができるなどの利点があり、現在広く使われている。 C言語の標準ランタイムライブラリのような汎用ライブラリは動的リンクするものの、ユーザー定義のライブラリは静的リンクする、あるいは汎用ライブラリは静的リンクするものの、ユーザー定義のライブラリは動的リンクする、両方動的リンクする、両方静的リンクする、といった組み合わせがあり、用途によって使い分けることもある。 リンクの処理(静的リンク)静的リンクでは、おおむね以下の処理が行われる。
リンクの処理(動的リンク)動的リンクにおいては、ローダをなんらかの方法で実行ファイルに加えなければならない。
処理系間の互換性オブジェクトファイルの形式は処理系固有であり、他の処理系で作られたオブジェクトファイルを静的リンクする事は通常はできない。このため、コンパイラとリンケージエディタはセットで提供されている事が多い。 追加機能処理系によっては、より高度な機能を実装している。
主な実装
脚注出典
関連項目 |