|
From: | Michael Goffioul |
Subject: | Re: DEFUN_DLD link rule |
Date: | Thu, 29 Aug 2013 23:33:19 -0400 |
On Thu, Aug 29, 2013 at 19:41:03 -0400, Michael Goffioul wrote:
> On Thu, Aug 29, 2013 at 7:33 PM, Mike Miller <address@hidden> wrote:
>>
>> Can someone comment on the necessity of explicitly linking in the
>> Octave libraries liboctinterp and liboctave when building oct-files?
>> Particularly with regard to non-GNU operating systems.
>>
>> Oct-files are shared objects that are dlopen'd by Octave at runtime on
>> demand, while the Octave libraries have already been loaded by the
>> executable. In my experience, on GNU/Linux at least, it's not
>> necessary (and sometimes even discouraged) to link in libraries that
>> the application is expected to have already loaded.
>>
>> What about other operating systems? If we were to remove
>> liboctinterp.la and liboctave.la from LIBADD, would this still work on
>> all other systems that we currently work on? And the same for the
>> mkoctfile command?
>
>
> That's not gonna work for Windows system, where you cannot have undefined
> references at link time (and and oct-file is very likely gonna use symbols
> from liboctinterp and liboctave).
>
> In my experience with MSVC, I even need to add libgnu.la to various link
> commands to make it work. Because MSVC does not auto-export all symbols, so
> the gnulib symbols that are linked into liboctave are private to liboctave
> and not re-exported for the other libraries. And I'm not sure it's even
> desirable to export the gnulib symbols, as they could clash with runtime
> library symbols and lead to multiple symbols errors.
Ok, thanks, exactly what I was asking for. We could potentially make
this conditional on the system. Is this related at all to the
--enable-link-all-dependencies configure option, is that also required
on Windows to link the way you are describing?
[Prev in Thread] | Current Thread | [Next in Thread] |