Libtool is intended to support a portable subset of shared library functionality. When you use an archive file to create a shared library, this is generally not a portable feature, and won't work on many systems (like Windows).
In this situation, you will be better off creating a shared library of the archive you want to link in, or expanding it into it's object files and linking them directly (like a Libtool convenience library). But whatever you may do, if you get an archive that isn't pic, it won't work, and because the one advantage to static archives is that they don't have to be pic (and may run a little faster) most of them are created from object files that are not pic. HTH, Rob On Wed, Jul 14, 2010 at 2:47 AM, Alon Bar-Lev <alon.bar...@gmail.com> wrote: > Thank you! > > But I do link the static library as PIC. > > Attached is a sample. > > When I remove the restriction all works, shared can call static, main > can call both. > --- > $ ldd xxx/bin/test1 > => > /usr/lib/libc.2 => /usr/lib/libc.2 > /usr/lib/libdld.2 => /usr/lib/libdld.2 > /usr/lib/libc.2 => /usr/lib/libc.2 > /tmp/alon/test-1/xxx/lib/libb.sl => /tmp/alon/test-1/xxx/lib/ > libb.sl > /usr/lib/libc.2 => /usr/lib/libc.2 > $ xxx/bin/test1 > --- > > --- > AUTOMAKE_OPTIONS = foreign 1.10 > ACLOCAL_AMFLAGS = -I m4 > > noinst_LTLIBRARIES = liba.la > lib_LTLIBRARIES = libb.la > bin_PROGRAMS = test1 > > liba_la_SOURCES = a.c > liba_la_CFLAGS = $(AM_CFLAGS) -prefer-pic > liba_la_LDFLAGS= $(AM_LDFLAGS) -rpath $(libdir) -static > > libb_la_SOURCES = b.c libb.exports > libb_la_LIBADD = liba.la > libb_la_LDFLAGS = $(AM_LDFLAGS) \ > -avoid-version -no-undefined \ > -export-symbols $(srcdir)/libb.exports > > test1_SOURCES = c.c > test1_LDADD = libb.la > --- > > On Tue, Jul 13, 2010 at 7:30 PM, Robert Boehne <rboe...@gmail.com> wrote: > > > > When your shared library links, that doesn't mean it will work. You > would need to run a program with it, that uses symbols in the archive you've > attempted to link to your shared library. > > > > IIRC, HPUX will generate non-pic by default and your link may not be > resolving anything in the static archive. > > > > > > On Tue, Jul 13, 2010 at 11:09 AM, Alon Bar-Lev <alon.bar...@gmail.com> > wrote: > >> > >> Hello, > >> > >> When I try to link shared library with static library on hpux I get > >> the following message: > >> """ > >> *** Warning: This system can not link to static lib archive libcore.la. > >> *** I have the capability to make that library automatically link in > when > >> *** you link to this library. But I can only do this if you have a > >> *** shared version of the library, which you do not appear to have. > >> *** But as you try to build a module library, libtool will still create > >> *** a static module, that should work as long as the dlopening > application > >> *** is linked with the -dlopen flag to resolve symbols at runtime. > >> """ > >> > >> However if I change libtool: > >> -deplibs_check_method="file_magic > >> (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library" > >> +deplibs_check_method="pass_all" > >> > >> It succeed in linking. > >> > >> Any reason why this is forbidden in hpux? > >> > >> $ uname -a > >> HP-UX hpux1 B.11.11 U 9000/800 1528720528 unlimited-user license > >> > >> Regards, > >> Alon Bar-Lev. > >> > >> _______________________________________________ > >> http://lists.gnu.org/mailman/listinfo/libtool > > >
_______________________________________________ http://lists.gnu.org/mailman/listinfo/libtool