A megosztott könyvtár vagy megosztott könyvtár olyan fájl , amelyet meg kell osztani egymással . A program által használt modulok külön megosztott objektumokból töltődnek be a memóriába, ahelyett, hogy a linker másolná őket, amikor egyetlen végrehajtható fájlt másol egy programhoz.
A megosztott könyvtárak statikusan összekapcsolhatók, ami azt jelenti, hogy a könyvtári modulokra való hivatkozások feloldódnak, és a modulokhoz memória kerül lefoglalásra a végrehajtható fájl létrehozásakor. De gyakran a megosztott könyvtárak összekapcsolása késik, amíg be nem töltődnek.
Néhány régebbi rendszer, például a Burroughs MCP , Multics , szintén csak egy formátummal rendelkezik a végrehajtható fájlokhoz, függetlenül attól, hogy általánosak-e vagy sem. Megosztott könyvtári fájljaik ugyanolyan formátumban vannak, mint a futtatható fájlok. Ennek két fő előnye van: először is, mindegyikhez csak egy rendszerbetöltő szükséges, nem kettő (a külön rendszerbetöltő további bonyolultságot jelent). Másodszor, lehetővé teszi a végrehajtható fájlok megosztott könyvtárként való használatát is, feltéve, hogy van szimbólumtáblájuk . A tipikus kombinált végrehajtható és megosztott könyvtári formátumok az ELF és a Mach-O (mindkettő Unix rendszeren) és a PE (Windows).
Egyes régebbi környezetben, mint például a 16 bites Windows vagy az MPE a HP 3000 esetében, csak veremalapú (helyi) adatok voltak engedélyezettek megosztott könyvtári kódban, vagy más jelentős korlátozások vonatkoztak a megosztott könyvtár kódjára.
A könyvtár kódja megosztható a memóriában a folyamatokkal , valamint a lemezen. Virtuális memória használata esetén a folyamatok a RAM fizikai oldalán futnak, amely különböző folyamatcímterekre van leképezve. Ennek megvannak az előnyei. Például egy OpenStep rendszerben az alkalmazások gyakran csak néhány száz kilobájt méretűek, és gyorsan betöltődnek; kódjuk nagy része olyan könyvtárakban volt, amelyeket az operációs rendszer más célból már betöltött.
A programok megoszthatják a RAM -ot független kód használatával , mint a Unixban , ami összetett, de rugalmas architektúrát eredményez. Ez biztosítja, hogy a különféle trükkök révén, mint például a címterek előzetes leképezése és az egyes megosztott könyvtárak oldalfoglalása, nagyobb eséllyel kerülhet megosztásra. A harmadik lehetőség az IBM System/38 és utódai által használt egyszintű tároló
Egyes esetekben a megosztott könyvtárak különböző verziói problémákat okozhatnak, különösen akkor, ha a különböző verziójú könyvtárak ugyanazzal a fájlnévvel rendelkeznek, és a rendszerre telepített különböző alkalmazások használják őket, amelyek mindegyike más verziót igényel. Az ilyen szkript DLL hell néven ismert, a Windows és az OS/2 DLL -ek után elnevezett . A legtöbb modern, 2001 utáni operációs rendszer rendelkezik tisztítási módszerekkel az ilyen helyzetek kezelésére, vagy alkalmazás-specifikus "magán" könyvtárakat használ.