Понятие системная библиотека применима как к отдельным программам, так и к операционным системам в целом, причем это касается семейств и Windows, и UNIX, и Mac.
Определение «библиотека» впервые появилось в 1951 году в книге М. Уилкса , Д. Уиллера и С. Гилла «Составление программ для электронных счётных машин»
По принципу действия системные библиотеки делятся на динамические и статические.
Динамические библиотеки
Динамически подключаемые библиотеки — это компонент, который загружается в память по запросу работающей программы. Таким образом нет нужды копировать код подпрограммы в каждое приложение — наиболее распространенные функции хранятся в качестве библиотеки.
Кроме того, загруженная в оперативную память библиотека может использоваться одновременно несколькими приложениями, что экономит ресурсы системы. Это было особенно актуально на заре развития вычислительной техники.
Файлы динамических библиотек в OC Windows имеют расширение .dll (Dynamic Link Library) и хранятся в каталоге system32. Аналогичные компоненты в UNIX подобных системах называются общие объекты (shared objects) и имеют расширение .so, в Mac OS - .dlyb.
Морис Уилкс с соавторами дал следующее определение библиотеке - короткая, заранее заготовленная программа для отдельных, часто встречающихся (стандартных) вычислительных операций.
Всех преимуществ модульного подхода к выполнению программ получить не удалось. Виной тому явление, известное как DLL hell, при котором программа запрашивает одновременно разные версии одной библиотеки (DLL). Это приводит к сбоям и уменьшению надежности ОС.
В современных ОС семейства Windows, во избежание конфликтов, разрешено использование разных версий библиотек, что повышает надежность, но противоречит самому принципу модульности.
Статические библиотеки
Статические библиотеки также хранят в себе коды подпрограмм и функций, но в отличие от динамических, используются они при компиляции программ. То есть необходимый код целиком включается в программу. Приложение становится автономным, независимым от динамических библиотек, но увеличивается в размерах.
Как правило в Windows файлы таких библиотек имеют расширение .lib, в UNIX-подобных системах - .a.
Работа с большинством компилируемых языков, например, C, C++, Pascal, невозможна без статических библиотек.