On Tuesday, April 17, 2001, at 01:50 PM, Alexandre Oliva wrote:
> On Apr 17, 2001, Chris Leishman <[EMAIL PROTECTED]> wrote:
>
>> *** Warning: This library needs some functionality provided by
>> extra/libextra.a.
>
>> 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
>
> How exactly are you specifying this flag, and what exactly happens?
I'm using automake, and I add it to the binary_LDFLAGS option, which
adds it to the link line.
Everything compiles ok, but the dlopen fails with the error "not a
Mach-O MH_BUNDLE file type" (this error message is output by dlcompat
when NSCreateObjectFileImageFromFile returns
NSObjectFileImageInapproriateFile).
>> I'm just wondering why it can't just suck the object files out of the
>> archive when linking the shared library?
>
> Because they're likely to be non-PIC, and several platforms don't
> support non-PIC in shared libraries. If Darwin does, all you have to
> do is to post a patch that sets deplibs_check_method=pass_all.
Yeah....I thought the PIC might be an issue - I just wasn't sure...
>> That seems to be how it works on other platforms.
>
> You haven't tested on enough other platforms :-)
Thats entirely reasonable! I've only tried this on Solaris/Linux/BSD
which isn't exactly alot.
I just hoped Darwin would have some similarities with BSD - but that was
a huge long shot considering its shared library system appears to be
totally different (weird Mach junk ;-) ).
>> Alternatively I can compile the subdir as a shared library, but that
>> means I need to use inter library dependencies when module loading -
>
> Compile it as a libtool convenience archive. That's exactly the
> purpose of this feature.
I tried that, but I still get the error:
*** 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 module. Therefore, libtool will create
*** a static module, that should work as long as the dlopening
*** application is linked with the -dlopen flag.
And the result is a static archive library (as stated in the warning).
I'm sending you an example module in a separate mail (not CC'd to the
list), which will show you how I've set up the build environment.
Thanks,
Chris
_______________________________________________
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool