dlopen is one way to allow plugins (aka extensions) to work.  If I can
arbitrarily open shared object files (aka libraries) at runtime, aka link
them in at runtime, I can extend a program without needing the original
author to know everything my extension does.

It's analogous to Perl's "use" functionality.  (I'm not asserting "use
DBI::DBD" does a dlopen, but I'm not asserting it doesn't, either.)

I also don't know why octave doesn't link explicitly against liboctave but
I'm sure there's a reason.  Perhaps this way liboctave can be upgraded
underneath octave without having to relink it, but this is mere speculation.

Cheers,
Ben

On Tue, May 27, 2025 at 12:51:09AM -0400, J. Milgram wrote:
> 
> hmm... dl ... open
> 
> Ah, so then ... dlopening liboctave is a way for octave to get to
> libopenblas, without it being picked up by "ldd octave" ...(?) That explains
> a lot.
> 
> Dumb related question: why does dlopen exist? Why not just link to the
> shared object at compile time?
> 
> thx
> Judah
> 
> 
> On 5/25/25 22:02, Ben Stern wrote:
> >0 bstern@farad:~$ ldd /usr/lib64/octave/7.3.0/liboctave.so.9.0.0 | grep -i 
> >blas
> >         libopenblas.so.0 => /usr/lib64/libopenblas.so.0 (0x00007f0dfe74e000)
> >
> >Looks like:
> >
> >- octave dlopens liboctave at runtime
> >
> >- I need to upgrade octave
> >
> >Ben
> >
> >On Sun, May 25, 2025 at 06:34:39PM -0400, J. Milgram wrote:
> >>Good idea to check with "strings" ... nothing familiar popped up, though.
> >>
> >>I was able to convince myself by experiment that "strings" would have popped
> >>out the blas symbols if blas had been statically linked so that's a good
> >>tool for the toolbox.
> >>
> >>thanks
> >>Judah
> >>
> >>
> >>
> >>
> >>
> >>On 5/25/25 17:54, Peter J. Teuben wrote:
> >>>Maybe a statc link. The strings command might give names you recognize
> >>>
> >>>On Sun, May 25, 2025, 17:02 J. Milgram <milg...@cgpp.com> wrote:
> >>>
> >>>    Here's a mystery I'm hoping someone can explain:
> >>>
> >>>    I just built octave (9.2.0). As usual, an easy build.  But this
> >>>    time I'm
> >>>    curious: How can I confirm that it linked against OpenBLAS and not
> >>>    one
> >>>    of the  other blas's I  have installed?
> >>>
> >>>    ldd /usr/bin/octave doesn't turn up any blas libraries at all. (huh?!)
> >>>
> >>>    The build procedure  is advertised as using the first blas it
> >>>    finds from
> >>>    the list [ OpenBLAS, atlas, netlib reference implementation ]. I have
> >>>    the first and third installed so  am hoping for OpenBLAS.
> >>>
> >>>    Anyone know a way to check this? Or why ldd doesn't show the
> >>>    executable
> >>>    linked to any blas at all?
> >>>
> >>>    thanks! And a meaningful Mem Day to all.
> >>>
> >>>    Judah
> >>>
> >>>
> >>>
> >>>    --     =====
> >>>    milg...@cgpp.com
> >>>    301-257-7069
> >>>
> >>>    You received this email because you are subscribed to the UM Linux
> >>>    User's Group (UM-LINUX) mailing list. If you would like to
> >>>    unsubscribe from this list, simply send an email to
> >>>    lists...@listserv.umd.edu with the message signoff UM-LINUX in the
> >>>    body.
> >>>
> >>>You received this email because you are subscribed to the UM Linux User's
> >>>Group (UM-LINUX) mailing list. If you would like to unsubscribe from this
> >>>list, simply send an email to lists...@listserv.umd.edu with the message
> >>>signoff UM-LINUX in the body.
> >>-- 
> >>=====
> >>milg...@cgpp.com
> >>301-257-7069
> >>
> >>You received this email because you are subscribed to the UM Linux User's 
> >>Group (UM-LINUX) mailing list. If you would like to unsubscribe from this 
> >>list, simply send an email to lists...@listserv.umd.edu with the message 
> >>signoff UM-LINUX in the body.
> >>
> 
> -- 
> =====
> milg...@cgpp.com
> 301-257-7069
> 
> 

-- 
Ben Stern
This space intentionally left blank.

You received this email because you are subscribed to the UM Linux User's Group 
(UM-LINUX) mailing list. If you would like to unsubscribe from this list, 
simply send an email to lists...@listserv.umd.edu with the message signoff 
UM-LINUX in the body.

Reply via email to