[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Разделяемые библиотеки
Начиная с ОС UNIX System V Версии 3.0, поддерживаются разделяемые
библиотеки. Когда операционная система запускает новый процесс,
использующий разделяемую библиотеку, она отображает содержимое
разделяемой библиотеки в адресное пространство процесса. Разделяемая
библиотека предоставляет некоторые преимущества, не копируя код в
файлы a.out.
Разделяемые библиотеки позволяют:
.    экономить дисковое пространство
   Так как  разделяемые библиотеки  не копируются  во все файлы a.out,
   которые используют их код, эти файлы получаются меньше и используют
   меньше дискового пространства.

.    экономить оперативную память
   Так как  во время исполнения код библиотеки разделяется, количество
   динамической памяти, требуемой процессам, уменьшается.

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

Разделяемые библиотеки позволяют увеличить используемое адресное
пространство. Используя разделяемые библиотеки, редактор связей не
копирует текстовый сегмент для функций, используемых в a.out. Тем не
менее каждый процесс, который использует разделяемую библиотеку,
получает собственную копию всего сегмента данных библиотеки. Если вы
используете функцию с объемным кодом, скажем printf, вы экономите
адресное пространство. Но если вы используете разделяемую стандартную
библиотеку лишь для доступа к strcmp, вам потребуется больше
пространства для данных, чем вы сэкономили бы, разделяя текст.
Знание этой информации может помочь вам сделать выбор между
использованием или не использованием разделяемых библиотек.
Разделяемая версия стандартной Си-библиотеки
Разделяемая версия стандартной Си-библиотеки содержит почти все
функции из секций 3C и 3S в Справочном руководстве программиста ОС
UNIX+ System V.
Чтобы использовать ее вместо архивной версии библиотеки, вы должны
скомпоновать ее с вашей программой:
cc prog.c -lc_s
Разделяемая версия библиотеки сетевого сервиса
Библиотека сетевого сервиса поставляется как разделяемая библиотека,
редактор связей ld(1) просматривает эту библиотеку, если использована
опция -lnsl_s.
Создание разделяемых библиотек - mkshlib(1)
Вы можете создать разделяемую библиотеку функций, используемых вами
или программами вашего проекта, с помощью команды mkshlib(1).
Помимо описания в Справочном руководстве программиста, глава 8
Руководства программиста ОС UNIX+ System V Версии 3 обсуждает, как
использовать и строить разделяемые библиотеки.