In senso generale, una libreria di sistema è un archivio di dati utilizzati dai sistemi operativi o dal software applicativo durante il funzionamento o la compilazione.
Le librerie di sistema contengono subroutine e funzioni di uso comune. Per quanto riguarda la programmazione, le librerie memorizzano classi comuni per lavorare con grafici, array, finestre di dialogo e altro.
Il concetto di libreria di sistema è applicabile sia ai singoli programmi che ai sistemi operativi nel loro insieme, e questo vale per le famiglie sia di Windows, UNIX che di Mac.
La definizione di "biblioteca" è apparsa per la prima volta nel 1951 nel libro di M. Wilkes, D. Wheeler e S. Gill "Programming for Electronic Calculating Machines"
Secondo il principio di funzionamento, le librerie di sistema sono divise in dinamiche e statiche.
Librerie dinamiche
Le librerie a collegamento dinamico sono un componente che viene caricato in memoria quando richiesto da un programma in esecuzione. Pertanto, non è necessario copiare il codice della subroutine in ciascuna applicazione: le funzioni più comuni sono memorizzate come una libreria.
Inoltre, la libreria caricata nella RAM può essere utilizzata contemporaneamente da più applicazioni, risparmiando risorse di sistema. Ciò era particolarmente vero nei primi giorni dell'informatica.
I file Dynamic Link Library in Windows OC hanno l'estensione.dll (Dynamic Link Library) e sono archiviati nella directory system32. Componenti simili in sistemi simili a UNIX sono chiamati oggetti condivisi e hanno l'estensione.so, in Mac OS -.dlyb.
Maurice Wilkes e altri hanno dato la seguente definizione a una libreria: un breve programma pre-preparato per operazioni computazionali individuali e frequenti (standard).
Non è stato possibile ottenere tutti i vantaggi di un approccio modulare all'esecuzione del programma. Ciò è dovuto al fenomeno noto come DLL hell, in cui il programma richiede contemporaneamente versioni diverse della stessa libreria (DLL). Ciò porta a guasti e una ridotta affidabilità del sistema operativo.
Nei moderni sistemi operativi della famiglia Windows, per evitare conflitti, è consentito l'uso di diverse versioni di librerie, il che aumenta l'affidabilità, ma contraddice il principio stesso della modularità.
Librerie statiche
Le librerie statiche memorizzano anche subroutine e codici funzione, ma a differenza di quelle dinamiche, vengono utilizzate durante la compilazione dei programmi. Cioè, l'intero codice richiesto è incluso nel programma. L'applicazione diventa autonoma, indipendente dalle librerie dinamiche, ma cresce di dimensioni.
Di norma, su Windows, i file di tali librerie hanno l'estensione.lib, su sistemi simili a UNIX -.a.
Lavorare con la maggior parte dei linguaggi compilati, ad esempio C, C++, Pascal, è impossibile senza librerie statiche.