[devel] Q: libtool (clanlib)

Alexey Morozov =?iso-8859-1?q?alex-altlinux_=CE=C1_idisys=2Eiae=2Ensk=2Esu?=
Пт Окт 15 12:49:54 MSD 2004


On Fri, Oct 15, 2004 at 12:56:15AM +0400, Alexey Tourbin wrote:
> Разделяемая библиотека libclanCore должна быть слинкована с разделяемой
> библиотекой libclanSignals (однако Makefile'ами этого не предусмотрено).
> Для этого я делаю такой патч:
> 
> --- ClanLib-0.7.8~/Sources/Core/Makefile.am	2004-04-20 13:36:27 +0000
> +++ ClanLib-0.7.8/Sources/Core/Makefile.am	2004-10-14 19:58:21 +0000
> @@ -125,7 +125,7 @@
>  endif
>  
>  # FIXME: Hardcoding these here might not be a good idea
> -libclanCore_la_LIBADD = @LIBPTHREAD@
> +libclanCore_la_LIBADD = @LIBPTHREAD@ ../Signals/libclanSignals.la
>  
>  libclanCore_la_LDFLAGS = \
>    -release $(LT_RELEASE) \
> 
> Однако же сборка не проходит, т.к. на момент сборки библиотеки
> libclanCore.la библиотека libclanSignals.la ещё не собрана:
Ну, это проблема не libtool, а корректности написанного Makefile[.am]

Если не хочется менять порядок сборки (передвигать Signals перед
Core в вышестоящем Makefile.am), то можно добавить в
Sources/Core/Makefile.am правило для сборки
../Signals/libclanSignals.la, что-то типа

../Signals/libclanSignals.la:
	$(MAKE) -C ../Signals/ libclanSignals.la

(Ну, и, конечно же, убедиться, что ../Signals/libclanSignals.la попадает
в зависимости к libclanCore.la. При использовании _LIBADD это происходит
автоматически, если мне не изменяет память).

> $ cd ../Signals
> $ make
> ...
> $ cd ../Core
> $ make
> /bin/sh ../../libtool --mode=link g++ ... -lpthread ../Signals/libclanSignals.la -lz
> g++ -shared ... -Wl,--rpath -Wl,/home/at/RPM/BUILD/ClanLib-0.7.8/Sources/Signals/.libs -L/usr/X11R6/lib -lpthread ../Signals/.libs/libclanSignals.so -lz ...
> ...
> $
> 
> Однако же появляется rpath на каталог Sources/Signals/.libs.
Насколько я помню, он должен изчезать после фазы инсталляции библиотеки
(средствами libtool, опять-таки, --mode=install). То есть, на этапе сборки
у всех подобных библиотек будет rpath, чтобы можно было грузить
приложения локально, без инсталляции (н-р, тесты).

> Вопрос: можно ли корректно решить эту задачу стандартными
> средствами automake/libtool?
Вероятно, да.

P.S. И не забудьте добавить

%__libtoolize --copy --force
aclocal
automake
autoconf

перед %configure ;-))

----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?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/20041015/0719e684/attachment-0001.bin>


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