Skip to content

Latest commit

 

History

History
63 lines (45 loc) · 2.28 KB

rpath-and-runpath.rst

File metadata and controls

63 lines (45 loc) · 2.28 KB

Linker "rpath" and "runpath" functionality

PMIx |opmix_ver| is composed of multiple libraries that depend on each other.

When built from official distribution tarballs, PMIx is built with the following versions of the GNU Autotools:

This set of GNU Autotools invokes the libtool executable to build PMIx's libraries and executables with the -rpath CLI option.

The behavior of libtool -rpath ... is, unfortunately, highly system-dependent. In conjunction with compiler-, linker-, and other system-level settings, the end result may be to effect "rpath" behavior, "runpath" behavior, or possibly even neither behavior.

Although the specific behavior of libtool -rpath .. is outside the scope of this documentation, you can run commands such as readelf -d ... to find out with which behavior your PMIx was built.

For example:

shell$ ./configure --prefix=/opt/pmix/ ...
...
shell$ make -j 32 all && make install
...
shell$ readelf -d /opt/pmix/lib/libmpi.so | egrep -i 'rpath|runpath'
 0x000000000000001d (RUNPATH)            Library runpath: [/opt/pmix/lib]

The above output indicates that libpmix.so was built with "runpath" support, whereas output like this:

shell$ readelf -d /opt/pmix/lib/libpmix.so | egrep -i 'rpath|runpath'
 0x000000000000000f (RPATH)              Library rpath: [/opt/pmix/lib]

indicates that libpmix.so was built with "rpath" support.

Note

If you want to utilize additional compiler or linker flags (such as runpath flags) when building PMIx, you can :ref:`specify these flags on the configure command line <install-configure-compilers-and-flags-label>`.

For example, if invoking libtool -rpath ... on your system actually effects "rpath" behavior, and you wish to effect "runpath" behavior, you could set LDFLAGS when invoking configure, like this:

shell$ ./configure LDFLAGS=-Wl,--enable-new-dtags ...