[devel] Re: libtool: la_LIBADD vs noinst_LIBRARIES
Mikhail Zabaluev
=?iso-8859-1?q?mhz_=CE=C1_altlinux=2Eorg?=
Ср Фев 4 12:20:35 MSK 2004
Hello Alexey,
On Wed, Feb 04, 2004 at 12:35:22AM +0300, Alexey Tourbin wrote:
>
> Теперь обратим внимание на пакет mpfc (music player for console).
>
> $ cat mpfc-1.1.1/plugins/effect/echo/Makefile.am
> lib_LTLIBRARIES = libecho.la
>
> libdir = $(prefix)/lib/mpfc/effect
>
> libecho_la_SOURCES = echo.c
> INCLUDES = -I$(top_builddir)/src
> libecho_la_LIBADD = $(top_builddir)/src/util/libutil.a \
> $(top_builddir)/src/cfg/libcfg.a
> $
>
> Здесь мы видим, что "полноценная" libtool библиотека libecho.la как в
> статическом, так и в динамическом виде линкуется со вспомогательными
> статическими библиотеками libutil.a и libcfg.a.
>
> $ cat mpfc-1.1.1/src/util/Makefile.am
> noinst_LIBRARIES = libutil.a
> libutil_a_SOURCES = util.c ../util.h
> localedir = $(datadir)/locale
> DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
> INCLUDES = -I$(top_builddir)/src
> $
>
> Здесь мы видим, что библиотека libutil.a действительно является
> вспомогательной и не предназначена для установки (noinst_LIBRARIES),
> а предназначена только для статической компоновки в libecho.la и в
> некоторые другие библиотеки этого пакета.
>
> Таким образом, by design, в этом пакете статический non-piс код
> (libutil.a) будет "подмешиваться" в динамические библиотеки
> (libecho.so). Соответственно, такие динамические библиотеки не будут
> проходить проверку brp-verify_elf.
>
> К чести libtool надо сказать, что в таких ситуациях он выдает честное
> предупреждение:
>
> *** Warning: Linking the shared library libecho.la against the
> *** static library ../../../src/util/libutil.a is not portable!
>
> К "стыду" разработчиков надо сказать, что пакет mpfc не один подвержен
> этой напасти (сегодня я ещё исправил flac и буду дальше заниматься этим
> вопросом).
>
> Теперь предлагаю обсудить варианты решения проблемы:
>
> 1) Можно изменить структуру пакета (возможно, увеличив число полноценных
> библиотек и исключив вспомогательные статические библиотеки).
Для этого нужно немного переделать src/util/Makefile.am:
noinst_LTLIBRARIES = libutil.la
libutil_la_SOURCES = util.c ../util.h
...
Больше можно почитать в info по automake, раздел "Convenience Libraries".
--
Stay tuned,
MhZ JID: mhz на altlinux.org
___________
You'd best be snoozin', 'cause you don't be gettin' no work done at 5 a.m.
anyway.
-- From the wall of the Wurster Hall stairwell
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?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/20040204/4ad73695/attachment-0001.bin>
Подробная информация о списке рассылки Devel