I'm wondering if someone can tell me or refer me to some discussion
about why libtoolize --ltdl on Debian installs an ltdl.c that does not
set the LT_GLOBAL flag in its call to dlopen, whereas that in several
other distributions does set the flag (specifics below). I have
googled around for a while and haven't come across much. I'd also like
to know if there's a way to coerce it to do so - again, I haven't had
much luck with it to date.
I've been beating my head against some problems building the
libnetdude
package (network traffic handling and manipulation framework) on debian
(stable/sarge with libtool 1.5.6, and testing/woody with libtool
1.5.22). Specifically, when I build the
package from the CVS source and run the autogen script locally, the
libltdl that gets generated by libtoolize doesn't dlopen modules with
the LT_GLOBAL flag set as it does on FreeBSD 6.1 with libtool 1.5.20,
FC3 with libtool 1.5.6, and FC4 with libtool 1.5.16. This presents a
problem for this package, as it's using a plugin architecture where the
modules are compiled independently, expecting to be able to look up
symbols exported by other modules at run-time, and I get run-time ld
errors if that flag is not set. The
-export-dynamic flag doesn't appear to work for inter-library
dependencies, unfortunately. The advice presented in chapter 8 of
the 1.3.2 libtool docs (link the module with -L/-l arguments specifying
the .so's of the depended-upon modules) works to get things running,
but we'd really rather avoid having to pre-link against other modules
if we can avoid it. As I understand it, going through the modules
code to look up all the function calls via dlsym would probably also
work, but that's a whole lot of work for a couple of people who are
trying to finish up theses. :P
So I'm really curious to know why libtoolize doesn't set the LT_GLOBAL
flag in dlopen calls on Debian, which appears to be behaviour peculiar
to that platform, and if there's a way to override that behaviour
either package-wide or on a per-module basis (perhaps I'm just not
using -export-dynamic properly?) If anyone could offer some
insight, it would be greatly appreciated. Please let me know if I
can provide additional information about my system configuration that
would be useful.