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.