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