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