[devel] Re: .a vs .so

Dmitry V. Levin =?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Вс Янв 11 19:01:22 MSK 2004


On Sun, Jan 11, 2004 at 05:44:30PM +0300, Алексей Любимов wrote:
> >5. После обнаружения .la-файла, оригинальный (неправленный Альтом) libtool
> >использует информацию из dependency_libs для рекурсивного разворачивания
> >цепочки зависимостей библиотек до самого низа. При этом очевидно, что
> >при некоторых условиях возможна ситуация, когда одновременно линкеру
> >передаются две версии одной и той же библиотеки (н-р, libdb4.x :-)).
> >
> Вопрос
> а если в системе стоят только  libdb4.0 и libdb4.1, libdb4.1-devel (со 
> статиком)
> будет подхвачена libdb4.0?

Во время сборки или во время запуска?

Если программа A была собрана с библиотекой L и с libdb4.1, а библиотека L
- с библиотекой libdb4.0, то во время запуска программы A в памяти
окажется и libdb4.0, и libdb4.1, и последствия этого будут ужасны.
  
> >Это, как справедливо отметил Дмитрий Левин, чревато всякими "Ужасными
> >Последствиями" для базы rpm, в частности.
> >
> А bte зачем делали?

О чём это вы?  BTE - это миф.
Если программа A из предыдущего примера не используется во время сборки
других пакетов, то выявить её неработоспособность путём пересборки Сизифа
не удастся.

> >7.2. Во-вторых, вне зависимости от характера линковки, нам, строго говоря,
> >_необходима_ информация, записанная в  dependency_libs. Необходимость
> >этой информации обусловлена [достаточно гипотетической, впрочем]
> >возможностью наличия в зависимостях статической библиотеки без
> >соответствующего динамического аналога (я припоминаю, что, вроде, то ли
> >libkrb, то ли libsocks [некогда] распространялся в таком вот виде). Плюс
> >всякие third-party, но это уже их головная боль, наверное.
> >
> другими словами, даже деление на devel и devel-static с последующей 
> неустановкой *-static для  сборки программы с динамической линковкой в 
> общем случае некорректно?

В том случае, о котором идёт речь в 7.2, некорректно.
Правда, у нас в Сизифе таких всего 2:
glibc-devel (libc_nonshared.a и *crt*.o) и gcc (*crt*.o).
И надеюсь, что не будет.

> >7.3. Во-третьих, кроме dependency libs, содержимое .la-файла (конкретно,
> >имя библиотеки) используется libtool'ом для обеспечения корректной работы
> >с ltdl-модулями (см. autobook)
> >
> Предыдущее предположение и здесь в силе?

Нет.  Во время динамической загрузки можно нормально загрузить только
динамические модули.

> >8. Предложено (Дмитрием же) альтернативное решение для проблемы из п. 5.
> >libtool подправлен таким образом, чтобы при динамической сборке на линуксе
> >список dependency_libs не раскрывался вовсе (при статической все 
> >по-прежнему).
> >Это решение, впрочем, не закрывает проблему 7.2, но, по крайней мере,
> >вроде бы, решает все остальные.
> >
> А почему нельзя на этапе сборки просто ограничить выбор пакетов 
> правильными зависимостями в спеке? Разве это не ограничит выбор 
> dependency_libs?

Вы предлагаете ликвидировать find-requires и перейти на указание
зависимостей собранных пакетов вручную?


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20040111/6c7329e6/attachment-0001.bin>


Подробная информация о списке рассылки Devel