Системные библиотеки содержат в себе часто встречающиеся подпрограммы и функции. Применительно к программированию, в библиотеках хранятся распространенные классы для работы с графикой, массивами, диалогами и прочим.

Понятие системная библиотека применима как к отдельным программам, так и к операционным системам в целом, причем это касается семейств и 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, невозможна без статических библиотек.