Отправляет email-рассылки с помощью сервиса Sendsay

Обратная совместимость и библиотеки

Здравствуйте, господа.

Подскажите, есть ли, желательно на русском, подробное описание, как
устроены динамические библиотеки в linux? Вопрос интересует с точки
зрения обратной совместимости.

Спасибо.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35530; Возраст листа: 2005; Участников: 1500
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/811916

Ответить   Mon, 19 Jan 2009 12:50:47 +0200 (#811916)

 

Ответы:

В сообщении от Monday 19 January 2009 20:50:47 spider написал(а):

Многие проекты свободного имеют одну неприятную особенность: у многих
библиотек нет жесткого интерфейса, что создает угрозу невозможности запуска
приложения, из-за элементарного отсутствия соответствия интерфейса вызываемой
функции. Для того, чтобы иметь возможность использовать обратную
совместимость принята нумерация файлов библиотек, что-то вроде lib.0.0.1 для
самого файла и кидается символическая ссылка с относительным путем для этого
файла, и именем что-то вроде lib.0, которую очень хочет программа. Таким
образом мы имеем возможность использовать две версии библиотеки, разместив их
соответственно в каталогах /usr/lib - для официальной дистрибуции,
и /usr/local/lib - для тестовых версий библиотек.
Данный подход требует много ручного труда, так, как иногда библиотеки требуют
для себя свои версии своих библиотек и т.д.

Доброго времени суток

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35531; Возраст листа: 2005; Участников: 1500
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/812005

Ответить   Anton Kerfi Mon, 19 Jan 2009 22:32:46 +1000 (#812005)

 

Anton Kerfi пишет:

Именно это я имел ввиду. Хотелось разобраться, причины такого положения
дел в технической плоскости лежат, или в человеческой. Вспоминаю OS/2,
там настолько строго соблюдался принцип обратной совместимости,
настолько, что многие приложения из warp (3.0) запросто выполнялись в
мерлине (4.0) и авроре (4.5) без какой либо установки старых либ.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35535; Возраст листа: 2005; Участников: 1500
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/812114

Ответить   Mon, 19 Jan 2009 18:25:05 +0200 (#812114)

 

spider wrote:

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

Другое дело, что этим немногие заморачиваются. Многие просто так меняют
не только интерфейс, но и поведение функции.

Если интересно, можете посмотреть на стандарт LSB - по идее, для всех
входящих в него функций и библиотек разработчики гарантируют обратную
совместимость.

Ответить   Tue, 20 Jan 2009 11:21:02 +0300 (#812406)

 

spider wrote:

Не знаю, как насчет русскоязычной литературы, но хорошая дока (можно
сказать, от первоисточника) - Ulrich Drepper - How To Write Shared
Libraries. Там неплохо написано и про обратную совместимость.

На английском лежит тут:
http://people.redhat.com/drepper/dsohowto.pdf

Ответить   Mon, 19 Jan 2009 16:27:09 +0300 (#812048)