If you want to have binaries and libraries portable across linux systems, or even portable across locations on your filesystem, you need to know a bit about dynamic linking.
First read man ld.so, this will tell you about where libraries are looked up
when they are being searched for during application startup. This should also
tell you something about why using RPATH is a bad idea (it's because it
overrides all else with a fixed location - useless).
Next you will want to see what is currently in the RUNPATH of an elf thing (I might call this RPATH in future, with the understanding that I mean alias RPATH=RUNPATH). There are atleast two ways of achieving this with standard tools. They are
objdump -p <binary>
and
readelf -d <binary>
It's usually a good idea to pipe the output through
egrep 'R(UN)?PATH'
which catches the legacy case of RPATH usage as well.
Finally, you are likely to want to modify it (I know I frequently am). Again,
there are two tools that can do the job: chrpath and patchelf. They are
very similar and can also quickly print the content of RUNPATH. Below are their
usage strings.
chrpath:
Usage: chrpath [-v|-d|-c|-r <path>] <program> [<program> ...]
-v|--version Display program version number
-d|--delete Delete current rpath/runpath setting
-c|--convert Convert rpath to runpath
-r <path>|--replace <path> Replace current rpath/runpath setting
with the path given
-l|--list List the current rpath/runpath (default)
-k|--keepgoing Continue as much as possible after an error.
-h|--help Show this usage information.
patchelf:
syntax: patchelf
[--set-interpreter FILENAME]
[--print-interpreter]
[--set-rpath RPATH]
[--shrink-rpath]
[--print-rpath]
[--force-rpath]
[--remove-needed LIBRARY]
[--debug]
[--version]
FILENAME
patchelf was developed by the nixos people, who depend on it to make
their whole idea of a package manager work.