Hi Vlad, * Vlad Skvortsov wrote on Sun, Dec 04, 2005 at 08:01:45AM CET: > > I use automake/libtool environment for a project with couple of dozens > of libraries. I link those libraries statically into the binaries that > are then distributed. It works ok. > > What I need now is to create a shared library that would contain a > subset of those smaller libraries. Say, I want to pack the contents of > libaaa.la, libbbb.la and libccc.la into libbig, and libbig has to be > shared (it will be distributed in binary form). > > When I use something like this: > > lib_LT_LIBRARIES = libbig.la > libbig_la_LIBADD = .../libaaa.la .../libbbb.la .../libccc.la > > I end up with the shared library that contains _references_ to _shared_ > libraries aaa, bbb and ccc. But I just want their contents to be packed > inside. > > How can I achieve that?
You make the other libraries into `convenience archives'. These are documented in both info Automake 'A Shared Library' info Libtool 'Static libraries' Short: noinst_LTLIBRARIES creates these, they contain objects with PIC code. You'd do: noinst_LTLIBRARIES = libaaa.la libbbb.la libccc.la lib_LTLIBRARIES = libbig.la libbig_la_LIBADD = ./libaaa.la ./libbbb.la ./libccc.la Now I guess you *also* want to build the program as will, with the stuff linked in statically. You *can* do bin_PROGRAMS = foo foo_LDADD = ./libaaa.la ./libbbb.la ./libccc.la and it will likely work fine, on many platforms. *However*: It's not totally portable, it will actually link PIC objects into your program, thus the program will be a bit slower than with non-PIC objects, and of course you should not let foo get anywhere close to libbig, as then you'll have fun with duplicate symbols. Does that help you? Cheers, Ralf