Читаем Linux API. Исчерпывающее руководство полностью

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

• /usr/lib — каталог, в который устанавливается большинство стандартных библиотек;

• /lib — в этот каталог следует устанавливать библиотеки, необходимые во время загрузки системы (так как на данном этапе каталог /usr/lib может быть еще недоступен);

• /usr/local/lib — в данный каталог следует устанавливать нестандартные и экспериментальные библиотеки (он также подходит в ситуациях, когда каталог /usr/lib подключается по сети и доступен сразу нескольким системам, а библиотеку при этом нужно установить локально);

• один из каталогов, перечисленных в файле /etc/ld.so.conf (который мы рассмотрим чуть ниже).

В большинстве случаев копирование файлов в любой из этих каталогов требует привилегий администратора.

После установки для soname и компоновочного имени должны быть созданы (относительные) символьные ссылки — обычно в том же каталоге, где находится сам файл библиотеки. Таким образом, чтобы установить демонстрационную библиотеку в /usr/lib (обновлять которую может только администратор), нужно выполнить следующие шаги:

$ su

Password:

# mv libdemo.so.1.0.1 /usr/lib

# cd /usr/lib

# ln — s libdemo.so.1.0.1 libdemo.so.1

# ln — s libdemo.so.1 libdemo.so

Последние две строчки в сессии командной строки создают символьные ссылки для soname и компоновочного имени.

ldconfig

Программа ldconfig(8) решает две потенциальные проблемы, присущие разделяемым библиотекам:

• разделяемая библиотека может находиться в разных каталогах. Ее загрузка может значительно замедлиться, если динамическому компоновщику придется искать ее во всех этих местах;

• при установке новых и удалении старых версий библиотеки некоторые символьные ссылки на имена soname могут оказаться неактуальными.

Для решения этих проблем программа ldconfig выполняет следующие действия.

1. Она проходит по стандартному набору каталогов и создает или обновляет файл кэша, /etc/ld.so.cache, содержащий мажорные версии всех найденных библиотек (точнее, последние минорные версии каждой из них). Динамический компоновщик, в свою очередь, использует данный кэш во время выполнения программы для превращения имени библиотеки в путь. Чтобы построить кэш, программа ldconfig сначала выполняет поиск по каталогм, указанным в файле /etc/ld.so.conf, а затем переходит к /lib и /usr/lib. Файл /etc/ld.so.conf содержит список каталогов (это должны быть полные пути), разделенных символами перевода строки, пробелами, табуляцией, запятыми или двоеточиями. В некоторых дистрибутивах в этот список входит каталог /usr/local/lib (в противном случае его, возможно, придется добавить вручную).

Команда ldconfig — p выводит текущее содержимое файла /etc/ld.so.cache.

2. Она проверяет последнюю минорную версию (то есть версию с самым большим минорным номером) каждой мажорной версии библиотеки для поиска встроенного имени soname, и затем создает (или обновляет) относительные символьные ссылки для каждого именн soname в том же каталоге.

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

По умолчанию программа ldconfig выполняет оба действия, описанных выше. Чтобы выборочно пропустить одно из них, можно воспользоваться параметрами командной строки: параметр — N предотвращает обновление кэша, а — X позволяет обойтись без создания символьных ссылок для имен soname. Существует также параметр — v (от англ. verbose — «подробно»), который заставляет команду ldconfig выводить подробности о ее работе.

Программа ldconfig должна запускаться при установке каждой новой или обновлении/удалении имеющейся библиотеки, а также в случае изменения списка каталогов в файле /etc/ld.so.conf.

В качестве примера работы программы ldconfig рассмотрим ситуацию, когда нужно установить две разные мажорные версии библиотеки. Для этого можно сделать следующее:

$ su

Password:

# mv libdemo.so.1.0.1 libdemo.so.2.0.0 /usr/lib

# ldconfig — v | grep libdemo

libdemo.so.1 — > libdemo.so.1.0.1 (changed)

libdemo.so.2 — > libdemo.so.2.0.0 (changed)

Выше мы отфильтровали вывод ldconfig с целью получить только информацию, касающуюся библиотеки с именем libdemo.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных