Новелла восемьдесят девятая, проясняющая вопрос с библиотеками

В Новелле восемьдесят третьей вскользь упоминалось, что, хотя пакет и может включать в себя библиотечные функции, необходимые для его функционирования, но обычной практикой является выделение их в отдельные пакеты, по научному они называемые разделяемыми библиотеками, или библиотеками функций соответствующего языка программирования. Эти программы не предназначены для непосредственного запуска, а встраиваются в исполняемые модули иных программ. Зачем? Ответить легко.

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

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

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

Однако список библиотек не исчерпывается glibc. При создании пользовательских интерфейсов используются библиотеки свойств терминала (например, ncurces) для консольных программ (например, для текстового интерфейса YaST2). А для режима графического требуется семейство библиотек libxcb, обеспечивающее поддержку Иксов. Интегрированные графические среды и их приложения нуждаются, кроме того, в библиотеках более высокого уровня. В случае среды KDE, который главным образом рассматривается в этих новеллах, в этих ролях выступают библиотеки функций C++ Qt и kdelibs. Кроме того, существует множество библиотек, обеспечивающих поддержку графических, мультимедийных и других специализированных функций.

Наличия в системе библиотечных пакетов достаточно для функционирования связанных с ними программ. Но вот для сборки пакетов требуются ещё и так называемые заголовочные файлы. Они при компиляции исполняемого модуля пакета обеспечивают вставку в него кода из библиотеки функций (или вообще из какого-либо пакета, например, ядра). Заголовочные файлы обычно входят в состав пакетов вида libname-devel или packagename-devel.


Назад | К содержанию | Вперёд