On Mar 20, 2011, at 11:07 AM, Greg Lewis wrote:

>> +JVMLIB          = -Xlinker -rpath -Xlinker $(LIBDIR)/$(LIBARCH)/$(VM_NAME) 
>> -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm
> 

Normally you would not bake in a runpath/rpath directly to a particular JVM 
library instance.
It's not unusual to have shared libraries with a dependency on JVM but not have 
a runpath/rpath
directory that includes the JVM. This is normal.
The JVM library instances are usually the ones that dlopen/LoadLibrary these 
other shared libraries.
Since there are multiple JVM instances, you need to let the JVM drive, so to 
speak.

So for example, on Solaris you would see:

svc6<821> ldd /opt/java/jdk1.7.0/jre/lib/i386/libjava.so
        libjvm.so =>     (file not found)                  
<------------------------------
        libverify.so =>  /opt/java/jdk1.7.0-b134/jre/lib/i386/libverify.so
        libsocket.so.1 =>        /lib/libsocket.so.1
        libnsl.so.1 =>   /lib/libnsl.so.1
        libdl.so.1 =>    /lib/libdl.so.1
        libc.so.1 =>     /lib/libc.so.1
        libjvm.so =>     (file not found)
        libmp.so.2 =>    /lib/libmp.so.2
        libmd.so.1 =>    /lib/libmd.so.1
        libscf.so.1 =>   /lib/libscf.so.1
        libuutil.so.1 =>         /lib/libuutil.so.1
        libgen.so.1 =>   /lib/libgen.so.1
        libsmbios.so.1 =>        /usr/lib/libsmbios.so.1
        libm.so.2 =>     /lib/libm.so.2

You would need to do this:
   ( setenv LD_LIBRARY_PATH  /opt/java/jdk1.7.0-b134/jre/lib/i386/server &&  
ldd /opt/java/jdk1.7.0/jre/lib/i386/libjava.so )
to get utilities like ldd to find libjvm.so.


-kto



Reply via email to