octave-maintainers
[Top][All Lists]
Advanced

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

Re: DEFUN_DLD link rule


From: Michael Goffioul
Subject: Re: DEFUN_DLD link rule
Date: Thu, 29 Aug 2013 19:41:03 -0400

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.

Michael.


reply via email to

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