Comment 4 for bug 1737608

Revision history for this message
Tony Lewis (tonyelewis) wrote :

I think this is related to https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/1253638

My understanding (gleaned in large part from comment #5 of that issue - https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/1253638/comments/5 ; errors all mine) is:

* RPATH tells the loader where to look for all libraries
* the RPATH was deprecated a long time ago because it was thought to be a mistake that RPATH is processed with higher priority than the LD_LIBRARY_PATH environment variable
* that deprecation has recently made it's way out to Ubuntu
* the ld linker (?) now defaults to setting RUNPATH instead of RPATH. RUNPATH differs from RPATH in two ways:
  * it's has *lower priority* than the LD_LIBRARY_PATH environment variable, and
  * the loader only uses it to search for direct dependencies, *not transitive dependencies*
* this means that a lot of people are going to spend a lot of time trying to figure out why their stuff is broken.

As I understand it, there are two solutions:
 * link with --disable-new-dtags to make linker revert to setting RPATH
 * fix all your .so files so that they can find their own dependencies (via a RUNPATH setting)

In my case, I fixed my problem by rebuilding my Boost libraries with a dll-path flag to tell the build where the .so files would be installed.