[devel] --as-needed: libtinfo, libncurses

Stanislav Ievlev =?iso-8859-1?q?inger_=CE=C1_altlinux=2Eorg?=
Вт Июн 27 10:17:08 MSD 2006


On Mon, Jun 26, 2006 at 06:50:51PM +0400, Dmitry V. Levin wrote:
> On Mon, Mar 06, 2006 at 09:25:13PM +0300, Dmitry V. Levin wrote:
> > On Mon, Mar 06, 2006 at 11:05:06PM +0500, Andrey Rahmatullin wrote:
> > > On Mon, Mar 06, 2006 at 03:08:44PM +0300, Dmitry V. Levin wrote:
> > > > > > - Pass --as-needed option to GNU ld by default.
> > > > > И никто не сломался? ;)
> > > > Это мы сейчас изучаем...
> > > Для этого надо попробовать запустить всё, что должно запускаться?
> > 
> > Для начала достаточно попробовать всё пересобрать и погрепать логи на тему
> > "undefined reference" и "undefined symbol".
> > 
> > Но есть и менее очевидные случаи.  Например, история с libtinfo.
> > Мы давно (3.5 года назад) распилили ncurses, выделив библиотеку libtinfo,
> > обеспечивающуюсовместимость с terminfo, в отдельную библиотеку (за основу
> > был взят распил, выполненный upstream).  Однако многие мантейнеры этот
> > факт игнорируют.  Теперь часть этих пакетов перестала собираться, поскольку
> > в ncurses нет символов, которые им нужны.  Другая часть этих пакетов стала
> > собираться без поддержки terminfo.
> > 
> > На примере пакета screen:
> > configure: checking for tgetent...
> > configure: checking libcurses...
> > configure: checking libtermcap...
> > configure: checking libtermlib...
> > configure: checking libncurses...
> > configure: error: !!! no tgetent - no screen
> 
> Я думаю, что раз уж мы включили --as-needed по умолчанию, то можно
> облегчить себе жизнь, превратив libncurses.so в linker script.
> Например, для elf32-i386 это может выглядеть так:
> 
> $ cat /usr/lib/libncurses.so
> OUTPUT_FORMAT(elf32-i386)
> GROUP(/usr/lib/libtinfo.so /usr/lib/libncurses.so.5)
Интересная мысль. А параметр OUTPUT_FORMAT обязателен? А то как-то не
очень наверное удобно будет держать несколько версий под разные платформы.




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