libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

dependency_libs question


From: Jon Nall
Subject: dependency_libs question
Date: 04 Nov 2002 10:16:44 -0600

hello.
i'm curious what the proper solution is to the following problem:

- i have a shared library, libfoo-internal.so

- i have another shared library, libfoo.so that depends on
libfoo-internal.so

- the interface between these two libraries may change in any given
version of foo. i'm compiling libfoo-internal.so with -release XX.YY to
make sure libfoo.so uses the correct version.

- the interface from libfoo.so to any applications that use it is stable
throughout a given major version (eg: libfoo-1.0.so and libfoo-1.4.so
have the same interface to the application). i use -version_info XX.YY
to handle this.

- when i use libtool to generate my .la files, i find that libfoo.la
contains the line dependency_libs="libfoo-internal.la". this means that
when my applications link against libfoo.so, they're also linked against
its dependencies (libfoo-internal.so). this is unacceptable because i
don't want my applications to be aware of libfoo-internal.so. they
should only know about the libfoo.so interface. otherwise, i'd have to
recompile my applications for every bugfix release.

i've found 2 solutions to the problem, neither of which i like.
1. change all apps that compile against libfoo.so to have
link_all_deplibs=no. this is undesirable for maintenance reasons.

2. manually remove the libfoo-internal.la entry from libfoo.la's
dependency_libs. 

i understand that on some systems (AIX, i think?) i'm out of luck -- the
dynamic loader can only handle one level of dependencies. but what about
linux, where it's perfectly fine to stick a -lfoo on the linker command
for application bar and when bar loads libfoo.so, the loader will
automatically pull in libfoo-internal.so?

i hope this is coherent. any direction is appreciated.
thank you.
nall.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]