[Top][All Lists]

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

shared library linking on Darwin

From: Chris Leishman
Subject: shared library linking on Darwin
Date: Tue, 17 Apr 2001 13:26:15 +1000


I've been playing with the latest alpha release of libtool and have come across this issue. When linking a shared library (for a dynamically loaded module), the project I'm working on uses code from a subdirectory that has been compiled into an archive library (.a).

So the link line is something like:

/bin/sh ./libtool --mode=link c++ -W -Wall -o --module main.lo extra/libextra.a

This generates the following warning:

*** Warning: This library needs some functionality provided by extra/libextra.a.
*** 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.

*** Warning: inter-library dependencies are not known to be supported.
*** All declared inter-library dependencies are being dropped.

*** Warning: libtool could not satisfy all declared inter-library
*** dependencies of module  Therefore, libtool will create
*** a static module, that should work as long as the dlopening
*** application is linked with the -dlopen flag.

Unfortunately I can't get the application to load the libshared.a file as a dynamic module (not unsurprising). Even if I specify -dlopen on the command line it still barfs - but since darwin doesn't have a dlopen call and I'm using wrapper library (dlcompat) this flag probably does nothing.

I'm just wondering why it can't just suck the object files out of the archive when linking the shared library? That seems to be how it works on other platforms. Is it a problem with the object code not being relocatable?

Alternatively I can compile the subdir as a shared library, but that means I need to use inter library dependencies when module loading - which doesn't seem to be supported?? (And besides, I don't want to have to distribute a second library file).

Any suggestions or comments.  Is this a bug?


Chris Leishman

reply via email to

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