現代のソフトウェア開発において、一つの巨大なソースコードファイルだけで全てのプログラムを記述することは稀です。通常は、機能ごとにファイルを分割して開発を行い、後からそれらを統合する手法がとられます。各ソースコードはコンパイラによって「オブジェクトファイル(.obj や .o といった拡張子を持つ中間ファイル)」に翻訳されますが、この状態ではまだ単独で実行することはできません。なぜなら、別のファイルに書かれた関数や、OSが提供する共通機能(画面表示やファイル保存など)への「呼び出し先(アドレス)」が、この時点では「仮の場所」として未解決のままになっているからです。
ここで登場するのが「リンカ(連係編集プログラムとも呼ばれます)」です。リンカは、複数のオブジェクトファイルと、あらかじめ用意された便利な部品の集まりである「ライブラリ」を一つにまとめ上げます。その際、各ファイル間にまたがる関数やデータの呼び出し関係を整理し、メモリ上のどこにどのプログラムが配置されるかという「アドレス(番地)」を正確に割り当て直す(アドレス解決)という極めて重要な作業を行います。このリンカによる結合(リンク)作業が完了して初めて、OS上でダブルクリックして起動できる最終的な「実行ファイル(ロードモジュールや .exe ファイルなど)」が誕生するのです。
なお、リンクの方式には、実行ファイルを作成する段階ですべてのモジュールを完全に結合してしまう「静的リンク」と、プログラムの実行時に必要なライブラリだけを随時メモリに読み込んで結合する「動的リンク(ダイナミックリンク)」の2種類があります。動的リンクを利用すると、実行ファイルのサイズを大幅に小さくでき、メモリの節約にもつながります。