I have a problem with the build and install process of openmpi-1.10.2.

I have here a machine running Debian GNU/Linux 8.2 ; this machine also
happens to have an openmpi-1.6.5 installation in /usr, as well as .
This should not matter, but here it does.

The machine also has an Infiniband software stack installed (MOFED 3.1) in /usr

I do the following:

wget 
https://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.2.tar.bz2
tar xf openmpi-1.10.2.tar.bz2
cd openmpi-1.10.2
./configure --prefix=/tmp/test --disable-mpi-fortran --without-cuda
--disable-opencl
make -j8
make -j8 install
objdump -x /tmp/test/lib/libmpi.so | grep libopen

The last line returns:

  NEEDED               libopen-rte.so.4
  NEEDED               libopen-pal.so.13

The requested version number for open-rte seems plain wrong, as it is
that of the library in /usr, not the one I should have (12).

The furthest I've been able to dig points me to libtool's relinking
process. The pre-relinking version numbers for the requested libs are
correct in the .so files which get built
(./ompi/.libs/libmpi.so.12.0.2). It turns out that if I do:

. <(sed -e s/@inst_prefix_dir@// -e s/--silent// < ./ompi/libmpi.la) ;
bash -c "$relink_command"

libtool confesses that the command line it uses ends up with:

 -Wl,-rpath -Wl,/tmp/test/lib -L/tmp/openmpi-1.10.2/opal/.libs
-L/usr/lib -losmcomp -libumad -lpthread -libverbs -L/tmp/test/lib
-lopen-rte -lopen-pal -lnuma -ldl -lrt -lm -lutil  -O3 -pthread
-pthread -Wl,-soname -Wl,libmpi.so.12 -o .libs/libmpi.so.12.0.2

Presumably, the -L/usr/lib is at fault here. I think it comes from
-losmcomp. One would expect to see a -L/tmp/openmpi-1.10.2/orte/.libs
somehow, although the -L/tmp/test/lib probably work if install timing
is right (libopen-rte first).

It's not clear to me whether the problem is that libtool explicitly
inserts -L/usr/lib in the first place, or that the -lopen-rte is
brought too late in the command line (but why?). I'd be glad if this
issue could be fixed.

Regards,

E.

Reply via email to