[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