Hi,

Lluís Batlle wrote:

> reading from ld.so, I see the order of checking directories for
> libraries goes as follows:
> 1 - rpath
> 2 - $LD_LIBRARY_PATH
> 3 - runpath
> 4 - ld.so.cache
> 5 - default ld.so directories (where glibc has been installed)
> 
> Is there any rationale behind the decision choosing rpath? Wouldn't
> the runpath allow easier library substitution with $LD_LIBRARY_PATH,
> and this would be a benefit?

In stdenv-linux in Nixpkgs we use the RUNPATH exactly for this reason (namely
allowing overriding through $LD_LIBRARY_PATH).  We used to set the RPATH
instead.  See pkgs/development/tools/misc/binutils/default.nix and
new-dtags.patch (which turns on the --enable-new-dtags flag by default).

BTW, binaries with a RUNPATH still have an RPATH, but it's ignored.

Also note that patchelf --set-path actually sets the RUNPATH nowadays unless you
use --force-rpath.

-- 
Eelco Dolstra | http://www.st.ewi.tudelft.nl/~dolstra/
_______________________________________________
nix-dev mailing list
nix-dev@cs.uu.nl
https://mail.cs.uu.nl/mailman/listinfo/nix-dev

Reply via email to