О библиотечных пакетах

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

Зачем? Ответить легко.

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

Вот их, как правило, и не программируют, поддаваясь смертному греху ленности. А объединяют соответствующие директивы в отдельные программные комплексы, именуемые библиотеками. Сами по себе они к автономному исполнению не пригодны. Однако любая программа, при необходимости совершить одно из типовых действий, вызывает из такой библиотеки некий фрагмент кода, содержащий требуемую последовательность директив.

Библиотеки обычно привязаны к определённым языкам программирования, синтаксису которого подчиняются описания директив, так называемых функции. Поскольку наиболее употребимым в UNIX-системах и их приложениях является язык C, то его функции и требуются чаще всего. Они собираются в главную системную библиотеку, которая именуется обычно libc (Library C), хотя реально это разные комплексы, отличающиеся полнотой функций и их описанием и зависящие от конкретной операционной системы.

Собственно говоря, главная системная библиотека C, наряду с ранее рассмотренными особенностями, и определяет в значительной мере специфику каждой ОС. А адаптация прикладных программ мира FOSS к её функционалу -- важный элемент портирования авторских пакетов, пакетных комплексов и даже цельной пакетной инфраструктуры на ту или иную операционку.

В подавляющем большинстве дистрибутивов Linux используется реализация главной системной библиотеки, именуемая glibc (GNU Library C); специализированные дистрибутивы могут использовать и другие библиотеки, например, uclibc, менее функциональную, но более компактную. Главная системная библиотека FreeBSD называется просто -- BSD libs, или просто libc, и функционально близка к glibc, хотя и не идентична ей.

Однако вариантами на тему libc список библиотек FOSS-мира не исчерпывается. В UNIX-подобных системах при создании пользовательских интерфейсов используются библиотеки свойств терминала (например, ncurces) для консольных программ и библиотеки, описывающие процедуры отрисовки окон и управления ими -- для графических программ системы X, библиотеки интерфейсных элементов и графических примитивов более высокого уровня (Motif, Qt, Gtk), библиотеки описания графических и мультимедийных форматов файлов и тому подобные "сборники", о чём будет говориться на следующей странице.

Очень важной библиотекой является скромная zlib, обеспечивающая сжатие данных в любых сферах, где это целесообразно и уместно.от сжатого образа ядра Linux до сетевых протоколов со сжатием, применяемых в самых различных ОС, в том числе и, страшно сказать, в Windows. Несколько лет назад мало кто, кроме разработчиков, знал это имя -- пока оно не прогремело на весь мир в связи с ошибкой в этой самой библиотеке. Впрочем, это дело будет предметом для рассмотрения Идеологическим сектором.

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


Теги: , , ,