On 15/11/18 2:16 am, Barrett, Brian via devel wrote:

> In practice, this should not be a problem. The wrapper compilers (and
>  our instructions for linking when not using the wrapper compilers)
> only link against libmpi.so (or a set of libraries if using Fortran),
> as libmpi.so contains the public interface. libmpi.so has a
> dependency on libopen-pal.so so the loader will load the version of
> libopen-pal.so that matches the version of Open MPI used to build
> libmpi.so However, if someone explicitly links against libopen-pal.so
> you end up where we are today.

Unfortunately that's not the case, just creating a shared library
that only links in libmpi.so will create dependencies on the private
libraries too in the final shared library. :-(

Here's a toy example to illustrate that.

[csamuel@farnarkle2 libtool]$ cat hhgttg.c
int answer(void)
{
        return(42);
}

[csamuel@farnarkle2 libtool]$ gcc hhgttg.c -c -o hhgttg.o

[csamuel@farnarkle2 libtool]$ gcc -shared -Wl,-soname,libhhgttg.so.1 -o 
libhhgttg.so.1 hhgttg.o -lmpi

[csamuel@farnarkle2 libtool]$ ldd libhhgttg.so.1
        linux-vdso.so.1 =>  (0x00007ffc625b3000)
        libmpi.so.40 => 
/apps/skylake/software/compiler/gcc/6.4.0/openmpi/3.0.0/lib/libmpi.so.40 
(0x00007f018a582000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f018a09e000)
        libopen-rte.so.40 => 
/apps/skylake/software/compiler/gcc/6.4.0/openmpi/3.0.0/lib/libopen-rte.so.40 
(0x00007f018a4b5000)
        libopen-pal.so.40 => 
/apps/skylake/software/compiler/gcc/6.4.0/openmpi/3.0.0/lib/libopen-pal.so.40 
(0x00007f0189fde000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f0189dda000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f0189bd2000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f01899cf000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f01896cd000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f01894b1000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f018929b000)
        libhwloc.so.5 => /lib64/libhwloc.so.5 (0x00007f018905e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f018a46b000)
        libnuma.so.1 => /lib64/libnuma.so.1 (0x00007f0188e52000)
        libltdl.so.7 => /lib64/libltdl.so.7 (0x00007f0188c48000)
        libgcc_s.so.1 => 
/apps/skylake/software/core/gcccore/6.4.0/lib64/libgcc_s.so.1 
(0x00007f018a499000)


All the best,
Chris
-- 
  Christopher Samuel     OzGrav Senior Data Science Support
  ARC Centre of Excellence for Gravitational Wave Discovery
  http://www.ozgrav.org/          http://twitter.com/ozgrav
_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/devel

Reply via email to