<[EMAIL PROTECTED]>Ralf Wildenhues writes: >Hi Tom, > >* tom fogal wrote on Fri, Jul 08, 2005 at 08:14:51PM CEST: >> Hi all, I'm trying to get libtool to link a program that depends on a >> circular list of static (libtool) libraries. >> >> I'm using a command line like: >> >> ../../libtool --mode=link --preserve-dup-deps g77 -Wall -I../include >> -O0 -o partrj -static *.o ../ui/libParTrjUI.la ../models/libSPPModels.la >> ../share/libSPPShare.la ../models/libSPPModels.la ../grid/libSPPgrid.la >> ../fields/libSPPFields.la ../share/libSPPShare.la >> ../menus/libParTrjMenu.la ../strings/src/libSPPStrings.la >> ../hash/libHash.la ../dbg/libSPPdbg.la ../t89files/libSPPt89.la >> >> unfortunately this ends up not working because libtool is >> removing/reordering some of the libraries: > >I presume this is because the libraries have interdependencies listed in >the respective .la files.
erm.. hopefully? This is all an autoconf/automake generated thing; it appears I was doing what are called 'libtool convenience libraries'. I simply pulled out + posted the line that caused problems. >> g77 -Wall -I../include -O0 -o partrj <bunch of .o files> >> ../ui/.libs/libParTrjUI.a ../models/.libs/libSPPModels.a >> ../grid/.libs/libSPPgrid.a ../fields/.libs/libSPPFields.a >> ../share/.libs/libSPPShare.a ../menus/.libs/libParTrjMenu.a >> ../strings/src/.libs/libSPPStrings.a ../hash/.libs/libHash.a >> ../dbg/.libs/libSPPdbg.a ../t89files/.libs/libSPPt89.a >> >> "--preserve-dup-deps" doesn't seem to have an effect. I also tried >> remaking the command line using -L and -l options instead of explicitly >> specifying the .la file, with the same effect of libtool stripping out >> libraries from the link line. > >Hmm. Is the package that contains these libraries freely available >online? If not: could you show the corresponding link lines for the unfortunately, no. >libraries? (Either the Makefile.am snippets, or whatever `make' makes >of it as libtool command line; plus libtool's output.) Sure. /bin/sh ../../libtool --mode=link g77 -Wall -I../include/ -pedantic-errors -fno-f90 -fno-automatic -finit-local-zero -fugly-complex -fugly-init -Wno-globals -g -O2 -o libSPPdbg.la dbg_basics.lo dbg_bevals.lo dbg_constants.lo dbg_harpol.lo dbg_interp.lo dbg_position.lo dbg_ivector.lo dbg_vector.lo dbg_vlstrn.lo ar cru .libs/libSPPdbg.a .libs/dbg_basics.o .libs/dbg_bevals.o .libs/dbg_constants.o .libs/dbg_harpol.o .libs/dbg_interp.o .libs/dbg_position.o .libs/dbg_ivector.o .libs/dbg_vector.o .libs/dbg_vlstrn.o ranlib .libs/libSPPdbg.a creating libSPPdbg.la (cd .libs && rm -f libSPPdbg.la && ln -s ../libSPPdbg.la libSPPdbg.la) You'll notice that the above has slightly different flags than what you would guess based on earlier lines I've included. Since I reported this, I've determined we don't really /need/ libtool at all, so I removed it from the project. After that I heard the project was missing some flags that should be there, from the source code author, so I've added them in. The line I just gave above is from me changing one of the Makefile.ams to use libtool again. The relevant Makefile.am snippets are: # old way -- using libtool noinst_LTLIBRARIES=libSPPdbg.la libSPPdbg_la_SOURCES= \ dbg_basics.f \ dbg_bevals.f \ dbg_constants.f \ dbg_harpol.f \ dbg_interp.f \ dbg_position.f \ dbg_ivector.f \ dbg_vector.f \ dbg_vlstrn.f [EMAIL PROTECTED]@lib/libSPPstrings.la The "new way" is the same but s/LTLIBRARIES/LIBRARIES/ and s/la/a/. All the libaries are (were) built in this same manner. >> I found a post on libtool-patches from 2002, where someone else had run >> into this issue. They expected linker flags of -Wl,"-(" <libs> -Wl,"-)" >> to fix it. I changed my link line above to use these linker flags in >> the libtool command line, but I still get the same error. It appears as >> if the patch was never applied (why?)? > >Are you talking about this? >http://lists.gnu.org/archive/html/libtool-patches/2002-09/msg00007.html Ooops, sorry! I had thought I included the link; mea culpa. Thanks for doing the research again for me =) >I can only guess it was not applied because it's a hack.. =( >> I am using libtool version '1.5.18 (1.1220.2.246 2005/05/16 10:00:18'. >> >> What am I doing wrong? How can one link in circular dependencies using >> libtool? > >Oh, most likely they are broken, but to be honest, I have no idea. We >don't have a proper test for them, so we can't expect them to stay >unbroken. The reason I have asked for details above is that we may be >able to generate a decent test case from your situation, and then work >from that. Well if theres more I can do to help in building a test case, just let me know / ask. -tom _______________________________________________ http://lists.gnu.org/mailman/listinfo/libtool