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 ;-))