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