From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 4 Feb 2004 12:20:35 +0300 From: Mikhail Zabaluev To: devel@altlinux.ru Message-ID: <20040204092035.GB2129@av1046.comex.ru> Mail-Followup-To: Mikhail Zabaluev , devel@altlinux.ru References: <20040203213522.GE23713@solemn.turbinal.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="5mCyUwZo2JvN/JJP" Content-Disposition: inline In-Reply-To: <20040203213522.GE23713@solemn.turbinal.org> User-Agent: Mutt/1.4.1i Subject: [devel] Re: libtool: la_LIBADD vs noinst_LIBRARIES X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.4 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Feb 2004 09:20:36 -0000 Archived-At: List-Archive: List-Post: --5mCyUwZo2JvN/JJP Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit 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 --5mCyUwZo2JvN/JJP Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAILljTKqCuNPJlLgRAlSwAJ9f9yfwGapOytLJpJ5JoK6K2OIROwCgh3Wn tmQgv5gCaTv6D3vxRsP6tr4= =ajih -----END PGP SIGNATURE----- --5mCyUwZo2JvN/JJP--