octave-maintainers
[Top][All Lists]
Advanced

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

Re: DEFUN_DLD link rule


From: Mike Miller
Subject: Re: DEFUN_DLD link rule
Date: Thu, 29 Aug 2013 23:10:56 -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? Could we link Octave's
libraries conditionally on that option as well? The following
changesets introduced both that option and linking the Octave
libraries at the same time:

http://hg.savannah.gnu.org/hgweb/octave/rev/7d1e11d922aa
http://hg.savannah.gnu.org/hgweb/octave/rev/f3c53fea9fb5

-- 
mike


reply via email to

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