[rust-dev] Impending change in RPATH behavior when linking to Rust dynamic libraries

Ilya Dmitrichenko errordeveloper at gmail.com
Sat Jul 12 17:08:03 PDT 2014


On 13 July 2014 00:43, Stepan Koltsov <stepan.koltsov at gmail.com> wrote:

> -- want to have several versions of rust side by side to investigate problems

Not true, the share object files include git revision in the name and
that's what they are being looked up by, as far as I understood.

So one can have:

DYLD_LIBRARY_PATH = /opt/Rust/0/lib/:/opt/Rust/1/lib/:/opt/Rust/2/lib/

My layout is like this:

cd /opt; ls Rust/versions/*/*/lib/libnative-*

Rust/versions/0f2ae7b932a9045f0d03ca35ff8cfc3fd939414e/rust-nightly-x86_64-apple-darwin/lib/libnative-1fb5e2c0-0.11.0-pre.dylib
Rust/versions/21fd11fef66e9973bd424915b9ee958c0990af2b/rust-nightly-x86_64-apple-darwin/lib/libnative-4e7c5e5c.dylib
Rust/versions/65395dc2bb240534c288bd60a5983538410af47d/rust-nightly-x86_64-apple-darwin/lib/libnative-35e04b6f-0.11.0.dylib
Rust/versions/8d6cd8c1b95b2bb6d14008258e5e571552159f38/rust-nightly-x86_64-apple-darwin/lib/libnative-4e7c5e5c.dylib
Rust/versions/a7b8824b2f8388705e4683b938fea442a663ebcb/rust-nightly-x86_64-apple-darwin/lib/libnative-4e7c5e5c.dylib

> -- need different fixed per-project environments

They will only need to care about executable path, which is something
they would need to care about even if this change hadn't been made.

> -- don't have permission to write into /usr/local (typically on shared
> servers)

Is is not a valid reason, they can unpack the tarball into any prefix.

> -- don't want to have a mess in /usr/local

Sure, so I personally put it under /opt/Rust/

>> As detailed in the meeting where this decision was made, Linux distros
>> really dislike it when you mess with rpath; it's a deal-breaker in many
>> cases.
>
> I don't know about all Linux distros, but apparently Ubuntu is OK about
> rpath:
>
> $ objdump -x /usr/lib/jvm/java-7-openjdk-amd64/bin/java | grep RPATH
>   RPATH
> $ORIGIN/../lib/amd64/jli:$ORIGIN/../lib/amd64:$ORIGIN/../jre/lib/amd64

Ubuntu is not the best example of how an OS should be built. It's
probably a longstanding OpenJDK issue too, did you check?


More information about the Rust-dev mailing list