TL;DR
コンパイラが生成した成果物(オブジェクトファイル)同士を結びつけ、実行形式のファイルを生成するツール。
仕組み
Wikipedia によると、ソースコードで使った関数や変数の名前は、最終的にすべてメモリアドレスに置き換えられる。プログラム全体の大きさが決まるまでアドレスを確定できないので、この置き換えはリンクのときに行う。C 言語では、コンパイルで作ったオブジェクトファイルに、ほかのオブジェクトファイルやライブラリを結合して実行ファイルを作る。
リンクの方法には、静的リンクと動的リンクがある。静的リンクは、リンクのときにオブジェクトやライブラリをすべて 1 つのファイルにまとめる。単独で動くが、ライブラリの分だけファイルが大きくなる。動的リンクは、リンクのときにはライブラリを名前だけで参照し、実行するときに結合する。実行ファイルが小さくなり、再リンクせずにライブラリを差し替えられる。実行時の結合はローダが行う。
関連
- コンパイラ
- オブジェクトファイル