Not knowing the openmpi build system, I am a little reluctant to say. But in most projects there is usually multiple paths that can be set at configure time. In most autoconfed projects it is called prefix. There are other ones that can be set for headers, etc.
From: Patrick Jessee [mailto:email@example.com]
Sent: Mon Nov 20 11:56:48 2006
Subject: [OMPI users] removing hard-coded paths from OpenMPI shared libraries
Hello. I'm wondering if anyone knows of a way to get OpenMPI to compile
shared libraries without hard-coding the installation directory in
them. After compiling and installing OpenMPI, the shared libraries have
the installation libraries hard-coded in them. For instance:
$ ldd libmpi.so
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000002a95852000)
libutil.so.1 => /lib64/libutil.so.1 (0x0000002a95968000)
libm.so.6 => /lib64/tls/libm.so.6 (0x0000002a95a6c000)
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000002a95bc4000)
libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a95cd8000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000002a9605a000)
In the above,
is hardcoded into libmpi.so using --rpath when libmpi.so is compiled.
This is problematic because the installation cannot be moved after it is
installed. It is often useful to compile/install libraries on one
machine and then move the libraries to a different location on other
machines (of course, LD_LIBRARY_PATH or some means then needs to be used
to pick up libs are runtime). This relocation is also useful when
redistributing the MPI installation with an application. The hard-coded
paths prohibit this.
I've tried to modify the "--rpath" argument in libtool and
opal/libltdl/libtool, but have not gotten this to work.
Has anyone else had experience with this? (I'm building OpenMPI 1.1.2
on linux x86_64.) Thanks in advance for any potential help.