Библиотеки

Материал из ПИЭ.Wiki

Перейти к: навигация, поиск

Зачастую при программировании используются одни и те же подпрограммы. Многократное их переписывание не целесообразно. Для решения этой проблемы используют библиотеки — наборы скомпонованных особым образом объектных файлов.

Выделяют статические и динамические библиотеки.

Содержание

Статические библиотеки

Существует два способа подключения статических библиотек:

  • Прямое подключение исходного кода, когда программа компилируется сразу целиком, вместе со всеми библиотеками.
  • Статическая линковка. Библиотека представлена в виде объектных файлов, присоединяемых (линкуемых) к исполняемой программе на этапе компиляции (в Microsoft Windows такие файлы имеют расширение .lib, в UNIX‐подобных ОС — обычно .a). В результате программа включает в себя все необходимые функции, что делает её автономной, но увеличивает размер.

Динамические библиотеки

Также называются библиотеки общего пользования или разделяемые библиотеки (англ. shared library) или динамически подключаемые библиотеки (англ. Dynamic Link Library, DLL). Это отдельные файлы, предоставляющие прикладным программам набор наиболее часто используемых функций, и загружаемые на этапе выполнения при обращении программы к ОС с заявкой на выполнение функции из библиотеки. Если запрошенная библиотека уже загружена в оперативную память, программа будет пользоваться загруженной копией. Такой подход позволяет экономить память, поскольку несколько программ используют одну копию библиотеки, загруженную в память.

Динамические библиотеки хранятся обычно в определенном месте и имеют стандартное расширение. Например, в Microsoft Windows файлы библиотек общего пользования имеют расширение .dll; в UNIX‐подобных ОС — обычно .so; в MacOS — .dylib.

При написании программы программисту достаточно указать транслятору языка программирования (компилятору или интерпретатору), что следует подключить такую-то библиотеку и использовать такую-то функцию из указанной библиотеки. Ни исходный текст, ни исполняемый код функции в состав программы не входит.

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

Преимущества и недостатки

Статические библиотеки делают программу более автономной: программа, скомпилированная со статической библиотекой может запускаться на любом компьютере, не требуя наличия этой библиотеки.

Программа, скомпонованная с динамической библиотекой, требует наличия этой библиотеки, поскольку в откомпилированной программе не код, а ссылка на код библиотеки.

Несмотря на такую зависимость, динамические библиотеки обладают двумя существенными преимуществами. Во-первых, программа, скомпонованная с совместно используемой библиотекой меньше размером, чем такая же программа, с подключенной к ней статической библиотекой.

Во-вторых, любая модернизация динамической библиотеки отражается на всех программах, использующих ее. Если некоторую библиотеку используют несколько программ, то исправление какой-нибудь ошибки в этой библиотеки или любое другое ее улучшение автоматически улучшает все программы, которые используют эту библиотеку. Однако, у этого преимущества есть и другая сторона: ошибки библиотеки отражаются на работе программ, использующих ее.

Таким образом, применение динамических библиотек позволяет добиться ряда преимуществ:

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

См. также

DLL Hell

Просмотры
Инструменты

Besucherzahler russian mail order brides
счетчик посещений
Rambler's Top100
Лингафонные кабинеты  Интерактивные доски  Интерактивная приставка Mimio Teach