Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: [OMPI users] 64-bit mpiJava in a heterogeneous environment
From: Siegmar Gross (Siegmar.Gross_at_[hidden])
Date: 2012-09-24 06:03:53


Hi,

I want to use mpiJava in openmpi-1.9a1r27361 in 64-bit mode in a
heterogeneous Solaris and Linux world and have a problem with the
installation of Java 7 update 7. I know that it is not exactly a
question for this group, but perhaps somebody wants to use mpiJava
in the same way and knows a solution for my problem. I have
downloaded and installed the following packages from
http://www.oracle.com/technetwork/java

jdk-7u7-solaris-sparc.tar.gz
jdk-7u7-solaris-sparcv9.tar.gz
jdk-7u7-solaris-i586.tar.gz
jdk-7u7-solaris-x64.tar.gz
jdk-7u7-linux-i586.tar.gz
jdk-7u7-linux-x64.tar.gz

The 32-bit Solaris packages contain everyting and the 64-bit packages
contain the add-ons for 64-bit. Especially they create separate
directories for the 64-bit binary programs in <path to Java>/bin and
<path to Java>/jre/bin. It's different for Linux, because both packages
contain everything and 32- and 64-bit binary programs are installed in
the same directory so that they overwrite each other. Therefore I
created subdirectories "amd64" in both "bin" directories, installed
the 64-bit package first and moved the binary programs into the new
subdirectories before I installed the 32-bit version. Unfortunately
that doesn't solve the problem, because the 64-bit version of "javac"
cannot find necessary libraries (although the library directory is
part of LD_LIBRARY_PATH).

/usr/local/jdk1.7.0_07/bin/amd64/javac: error while loading
  shared libraries: libjli.so: cannot open shared object file:
  No such file or directory

linpc4 fd1026 97 cd /usr/local/jdk1.7.0_07/bin/
linpc4 bin 98 ldd javac
        linux-gate.so.1 => (0xffffe000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xf7750000)
        libjli.so => /usr/local/jdk1.7.0_07/bin/../jre/lib/i386/jli/libjli.so (0xf773b000)
        libdl.so.2 => /lib/libdl.so.2 (0xf7736000)
        libc.so.6 => /lib/libc.so.6 (0xf75c9000)
        /lib/ld-linux.so.2 (0xf776c000)

linpc4 bin 99 cd amd64/
linpc4 amd64 100 ldd javac
        linux-vdso.so.1 => (0x00007fffc11ff000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f11d1083000)
        libjli.so => not found
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f11d0e7f000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f11d0aef000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f11d12a0000)

The problem is that the path to the library is hardcoded in the Linux
version of "javac" so that it looks in the wrong directory if you move
the program into a subdirectory.

linpc4 amd64 101 strings javac
/lib64/ld-linux-x86-64.so.2
...
$ORIGIN/../lib/amd64/jli:$ORIGIN/../jre/lib/amd64/jli
...

"Solaris x86_64" doesn't have this problem.

sunpc4 bin 105 cd amd64/
sunpc4 amd64 106 ldd javac
        libthread.so.1 => /usr/lib/amd64/libthread.so.1
        libjli.so => /usr/local/jdk1.7.0_07/bin/amd64/../../jre/lib/amd64/jli/libjli.so
        libdl.so.1 => /usr/lib/amd64/libdl.so.1
        libc.so.1 => /usr/lib/amd64/libc.so.1
        libm.so.2 => /usr/lib/amd64/libm.so.2

sunpc4 amd64 107 strings javac
-J-ms8m
Unknown
1.7.0_07-b10
/classes
/lib/tools.jar
com.sun.tools.javac.Main
java
JAR file
Main class
/jdk
/usr/jdk

Has anybody solved this problem without installing two complete
and separate versions of Java? Does anybody know about a Java
package for Linux which behaves in the same manner as the package
for "Solaris x86_64"? Is sombody from Oracle in this group who
can provide such a package on the Java web page? Thank you very
much for any suggestions in advance.

Kind regards

Siegmar