* 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.
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.