|
Message-ID: <c0bb87c2-2d46-8f11-f27f-95ee4d433c62@bell-sw.com> Date: Thu, 4 Jun 2020 22:37:40 +0300 From: Alexander Scherbatiy <alexander.scherbatiy@...l-sw.com> To: Rich Felker <dalias@...c.org> Cc: musl@...ts.openwall.com, Markus Wichmann <nullplan@....net> Subject: Re: Shared library loading On 25.05.2020 20:46, Rich Felker wrote: > On Mon, May 25, 2020 at 08:26:51PM +0300, Alexander Scherbatiy wrote: >> What is the suggested way in musl to load $libdir/myapp/libfoo.so >> from a custom directory so libbar.so can find it? > Probably putting the dir in your application's rpath (or in the rpath > of libbar). dlopen is not a tool for (effectively) adding additional > directories to the library search path. OpenJDK can have several jvm variants (like server, client, minimal). Each of variants contains its own version of libjvm.so lib. jdk/bin/java jdk/lib/server/libjvm.so jdk/lib/client/libjvm.so jdk/lib/minimal/libjvm.so When java is executed it first loads libjvm.so for the requested variant using dlopen() with RTLD_NOW | RTLD_GLOBAL flags [1] and then loads libraries from jdk/lib dir with dlopen() and RTLD_LAZY flag. To make it works with musl JDK implements workaround where it puts libjvm.so into LD_LIBRARY_PATH [2] and re-executes itself. Is there a better way to handle the case where an application with several lib variants can load common libraries without changing LD_LIBRARY_PATH? [1] https://hg.openjdk.java.net/portola/portola/file/7ff60204a181/src/java.base/unix/native/libjli/java_md_solinux.c#l590 [2] https://hg.openjdk.java.net/portola/portola/file/7ff60204a181/src/java.base/unix/native/libjli/java_md_solinux.c#l244 Thanks, Alexander. > Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.