ライブラリ
動的リンク (英: dynamic linking) は、あるライブラリ内のデータ(コードを含む)を新たな実行ファイルのビルド時にコピーすることはなく、ディスク上に別のファイルとして存在している。ビルド時にリンカが行うのは、その実行ファイルが必要とするのがどのライブラリのどの部分であるか(関数名やインデックス)を記録するだけである。リンク作業の大部分はそのアプリケーションがメモリ上にロードされたときか、実行時である。リンクを行うプログラムコードはローダ(英: loader)と呼ばれ、実際にはオペレーティングシステム (OS) の一部と見なされる。適当な時点でローダは必要なライブラリをディスク上で見つけてプロセスのメモリ空間に(追加のデータ空間と共に)マッピングする。OSによってはプロセスが実行開始する前でないとライブラリをリンクできないものもあるが、多くのOSではプロセス実行時に実際にライブラリを参照したときにリンクできる。後者は「遅延読み込み」などと呼ばれる。どちらの場合もライブラリは動的リンクライブラリ(ダイナミックリンクライブラリ)と呼ばれる。Windows環境では動的リンクライブラリの略称でもある「DLL」という呼び方が一般的であり、動的ライブラリのファイル拡張子は通例 .dll である。動的リンクライブラリの中でも、システム上の複数の実行プログラムによって共有・再利用されうるものを、共有ライブラリ(シェアードライブラリ)と呼ぶ。
ライブラリの命名規則はBSDを踏襲していて、動的ライブラリの拡張子には.dylibが使われるが、代わりに.soを使うこともできる。しかし、多くの動的ライブラリは「バンドル(英: bundles)」と呼ばれる特別な場所(パッケージ)に置かれ、ライブラリに関連するファイルやメタデータもそこに置かれる。例えば、"My Neat Library" というライブラリは "My Neat Library.framework" というバンドルに実装される。