Hi Makarius,
If I understand your aim correctly, you are trying to alter the path the
runtime linker will use to find libpolyml.so. Is it not simpler to statically
link to libpolyml instead? There’s probably a more elegant way to achieve this,
but a blunt approach is:
./configure --disable-shared --prefix=/tmp/foo
make
make install
ldd /tmp/foo/bin/poly | grep libpolyml # shows nothing
> On Feb 9, 2018, at 12:55, Makarius <[email protected]> wrote:
>
> Dear Poly/ML enthusiasts and experts of the gcc toolchain,
>
> we've occasionally discussed the problem of building a "portable"
> Poly/ML on Linux, such that the resulting directory does not have to be
> "installed" in a fixed location such as /usr/bin and /usr/lib.
>
>
> Here is my current approach to it, using an "rpath" in the poly
> executable and the chrpath tool to finalize it (on Ubuntu 16.04.3 LTS):
>
> make distclean
> rm -rf target
> ./configure --prefix="$PWD/target" LDFLAGS=-Wl,-rpath,_DUMMY_
> make compiler && make compiler && make install
> chrpath -r '$ORIGIN/../lib' target/bin/poly
>
>
> Here is a proof for the result:
>
> ldd target/bin/poly
>
> linux-vdso.so.1 => (0x00007fffdc799000)
> libpolyml.so.9 =>
> /home/makarius/lib/polyml/polyml-git/target/bin/../lib/libpolyml.so.9
> (0x00007f4b02d98000)
> libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4b029ce000)
> ...
>
>
> Note that the approach with -rpath,_DUMMY_ and separate chrpath has two
> main reasons:
>
> (1) I did not manage to pass $ORIGIN through LDFLAGS, configure,
> Makefile etc. unharmed, despite some attempts to escape the $ and some
> more backslashes.
>
> (2) The -Wl,-rpath,_DUMMY_ retains a trace from the original target
> directory, but chrpath -r resets all that cleanly.
>
>
> I am posting this here for the record, as a solution that works so far,
> see also
> http://isabelle.in.tum.de/repos/isabelle/file/8b19a8a7f029/src/Pure/Admin/build_polyml.scala
>
> Maybe there are further recommendations for simplification, e.g. smarter
> LDFLAGS could make the chrpath invocation obsolete (avoiding the
> requirement to install that tool from a separate Linux package).
>
>
> Makarius
> _______________________________________________
> polyml mailing list
> [email protected]
> http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml