Invia.cz
Last minute
Tunisko
Dovolená v Chorvatsku
Pojeďte do Egypta
Bulharsko
Vydělávejte peníze s INVIA.CZ
Knihovna (angl. library) je v programování funkční logický celek, který poskytuje služby pro programy. Většinou se jedná o sbírku procedur, funkcí a datových typů, či při objektově orientovaném přístupu o sadu tříd, uložených v jednom diskovém souboru.
Knihovna poskytuje aplikační programátorské rozhraní (zvané API), které umožňuje programu volat funkce poskytované touto knihovnou. Existuje mnoho knihoven pro různé účely, např. pro využívání služeb operačního systému, grafické funkce, řízení periférií, vědeckotechnické výpočty atp.
Obsah |
Z technického hlediska je možné rozdělit knihovny podle způsobu propojení s programem, který je bude využívat:
Statické knihovny jsou spojovány linkerem v době stavění programu. Linker do výsledného spustitelného souboru vloží všechen kód odkazovaný z kódu (tj. volané funkce) a rekurzivně funkce volané z těchto funkcí. Po technické stránce je statická knihovna archivem jednoho nebo více objektových souborů.
Výsledkem je tedy jeden spustitelný soubor, který v sobě obsahuje část statické knihovny, která je nezbytná pro chod daného programu.
Typickou příponou souboru statické knihovny je .lib nebo .a. Přípona závisí na použitém operačním systému a linkeru.
Při linkování programu s dynamickou knihovnu se do výsledného spustitelného souboru ukládají pouze tabulky odkazů na symboly definované v dynamické knihovně. Pro chod programu je pak nutno kromě vlastního programu mít na počítači nainstalovánu i příslušnou dynamickou knihovnu.
Při spouštění programu pak operační systém provádí tzv. dynamické linkování. Během tohoto procesu operační systém načítá do operační paměti jak kód vlastního programu (spustitelný soubor) tak i kód dynamické knihovny, kterou program vyžaduje ke své činnosti.
Dynamicky se dají linkovat i dynamické knihovny. Výsledkem je pak dynamická knihovna závislá na jiné dynamické knihovně.
Většina dnešních operačních systému dále umožňuje programům načítat knihovny do paměti za běhu programu. Toho se dá využít k implementaci plug-inů.
Typickou příponou souboru obsahujících dynamickou knihovnu je .dll v Microsoft Windows a .so v různých Unixech a v Linuxu.
Součástí návrhu většího softwarového projektu je obvykle i oddělení části funkčnosti do jedné nebo několika samostatných knihoven. Při návrhu knihovny se berou v úvahu především některé vlastnosti známé (na nižší úrovni) z objektově orientovaného programování: