.---> Static / Linux libraries < \ .---> Dynamic linking \ / `---> Shared < \ `---> Dynamic loading
Staticky spojované (linking) programy +-----------------+ +-----------------+ | Program X | | Program Y | |-----------------| |-----------------| |Statické knihovny| |Statické knihovny| | (*.a) | | (*.a) | +-----------------+ +-----------------+ Dynamicky spojované programy +-----------------+ +-----------------+ | Program X | | Program Y | +-----------------+ +-----------------+ +-----------------+ |Sdílené knihovny | | (*.so) | +-----------------+
V případě statického spojování programu s knihovnami se spojování provádí v době překladu programu. Knihovna je součástí binárního souboru programu.
V případě dynamického spojování není knihovna součástí programu. V programu je jen seznam symbolů (proměnných a funkcí) které jsou definovány v knihovně. Při zavádění programu do paměti počítače zavaděčem tento vyhledá knihovnu a spojí symboly v programu s funkcemi a proměnnými v knihovně. Pokud je knihovna již v paměti, nemusí se zavádět znova. Všechny běžící programy tak sdílí jeden kód knihovny v paměti počítače.