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 <makar...@sketis.net> 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
> polyml@inf.ed.ac.uk
> http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

_______________________________________________
polyml mailing list
polyml@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to