[Buildroot] rpath and runpath
Steve Kenton
skenton at ou.edu
Fri May 19 13:55:24 UTC 2017
Several years ago when I first started using buildroot I tripped over an
issue where the rpath of the mount executable would prevent unmounting
unless the lazy flag was used because the current mount point happened
to match the mount point where buildroot was originally built. For
umount it's easy enough to work around using umount -l but it got me
wondering about paths again. I found this article very helpful
http://amir.rachum.com/blog/2016/09/17/shared-libraries/
Each shared library in our dependencies is searched in the following
locations in order:
1. Directories listed in the executable’s |rpath|.
2. Directories in the |LD_LIBRARY_PATH| environment variable, which
contains colon-separated list of directories (e.g.,
|/path/to/libdir:/another/path|)
3. Directories listed in the executable’s |runpath|.
4. The list of directories in the file |/etc/ld.so.conf|. This file can
include other files, but it is basically a list of directories - one
per line.
5. Default system libraries - usually |/lib| and |/usr/lib| (skipped if
compiled with |-z nodefaultlib|).
The chrpath command can display and/or modify the (pre LD_LIBRARY_PATH)
rpath and (post LD_LIBRARY_PATH) runpath settings in the ELF executable.
As an example looking at the host and target /usr/sbin directory gives
the 95 lines of output below.
I can see the reason for having the host executables use an RPATH to the
build directory, although I think a relative path using "$ORIGIN" at
link time which would allow the tree to be relocated would be even better.
However, some of the target target executables also have RPATH to the
build directory which makes no real sense to me and other have no RPATH
or RUNPATH at all.
What is the purpose of this arrangement, or is it just a historical
accident?
Thanks, Steve Kenton
hdi at hdi-H110N:/ssd/bcdist/buildroot-2017.05/output$ find host/usr/sbin
target/usr/sbin -type f -exec chrpath {} \; 2>/dev/null | grep -i rpath
host/usr/sbin/e2image:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/fdisk:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/mkfs: RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/fsck.minix:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/swapoff:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/logsave:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/kstash:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/fsfreeze:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/blkdiscard:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/e2undo:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/dumpe2fs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/getpcaps:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/addpart:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/getcap:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/swapon:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/tune2fs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/resize2fs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/fsck: RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/losetup:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/mkfs.bfs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/e2fsck:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/mklost+found:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/filefrag:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/iprop-log:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/grub-bios-setup:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/fstrim:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/blkid:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/readprofile:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/grub-sparc64-setup:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/mkswap:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/ctrlaltdel:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/zic: no rpath or runpath tag found.
host/usr/sbin/raw: RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/delpart:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/rtcwake:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/grub-probe:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/agetty:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/swaplabel:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/switch_root:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/mke2fs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/mkfs.cramfs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/fdformat:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/badblocks:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/e2freefrag:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/grub-ofpathname:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/sfdisk:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/nologin:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/findfs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/partx:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/pivot_root:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/wipefs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/mkfs.minix:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/capsh: RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/resizepart:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/zramctl:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/sulogin:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/debugfs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/blockdev:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/chcpu: RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/fsck.cramfs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/uuidd:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/host-util-linux-2.29.2/.libs
host/usr/sbin/hwclock:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/setcap:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/e4crypt:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
host/usr/sbin/ldattach:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/lib
target/usr/sbin/dumpexfat: no rpath or runpath tag found.
target/usr/sbin/ctdbd: RPATH=/usr/lib/samba
target/usr/sbin/mkexfatfs: no rpath or runpath tag found.
target/usr/sbin/netscsid: no rpath or runpath tag found.
target/usr/sbin/ntfsclone:
RPATH=/ssd/bcdist/buildroot-2017.05/output/build/ntfs-3g-2017.3.23/libntfs-3g/.libs
target/usr/sbin/partprobe:
RPATH=/ssd/bcdist/buildroot-2017.05/output/build/parted-3.1/libparted/.libs:/ssd/bcdist/buildroot-2017.05/output/host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/util-linux-2.29.2/.libs
target/usr/sbin/ntfscp:
RPATH=/ssd/bcdist/buildroot-2017.05/output/build/ntfs-3g-2017.3.23/libntfs-3g/.libs
target/usr/sbin/proftpd: no rpath or runpath tag found.
target/usr/sbin/nmbd: RPATH=/usr/lib/samba
target/usr/sbin/exfatlabel: no rpath or runpath tag found.
target/usr/sbin/smbd: RPATH=/usr/lib/samba
target/usr/sbin/acpid: no rpath or runpath tag found.
target/usr/sbin/mdadm: no rpath or runpath tag found.
target/usr/sbin/sshd: no rpath or runpath tag found.
target/usr/sbin/readprofile: no rpath or runpath tag found.
target/usr/sbin/mkntfs:
RPATH=/ssd/bcdist/buildroot-2017.05/output/build/ntfs-3g-2017.3.23/libntfs-3g/.libs
target/usr/sbin/rtcwake: no rpath or runpath tag found.
target/usr/sbin/ntfsundelete:
RPATH=/ssd/bcdist/buildroot-2017.05/output/build/ntfs-3g-2017.3.23/libntfs-3g/.libs
target/usr/sbin/mount.exfat-fuse: no rpath or runpath tag found.
target/usr/sbin/ntfslabel:
RPATH=/ssd/bcdist/buildroot-2017.05/output/build/ntfs-3g-2017.3.23/libntfs-3g/.libs
target/usr/sbin/winbindd: RPATH=/usr/lib/samba
target/usr/sbin/php-fpm:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib
target/usr/sbin/parted:
RPATH=/ssd/bcdist/buildroot-2017.05/output/build/parted-3.1/libparted/.libs:/ssd/bcdist/buildroot-2017.05/output/host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib:/ssd/bcdist/buildroot-2017.05/output/build/util-linux-2.29.2/.libs
target/usr/sbin/lighttpd:
RPATH=/ssd/bcdist/buildroot-2017.05/output/host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib
target/usr/sbin/ntfsresize:
RPATH=/ssd/bcdist/buildroot-2017.05/output/build/ntfs-3g-2017.3.23/libntfs-3g/.libs
target/usr/sbin/exfatfsck: no rpath or runpath tag found.
target/usr/sbin/kacpimon: no rpath or runpath tag found.
target/usr/sbin/uuidd:
RPATH=/ssd/bcdist/buildroot-2017.05/output/build/util-linux-2.29.2/.libs
target/usr/sbin/lighttpd-angel: no rpath or runpath tag found.
target/usr/sbin/ldattach: no rpath or runpath tag found.
hdi at hdi-H110N:/ssd/bcdist/buildroot-2017.05/output$
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20170519/a7ad35fb/attachment.html>
More information about the buildroot
mailing list