Release v3.0.0
-
Rewritten in C99 with 0 external dependencies.
-
Significantly faster & smaller (~50KB statically compiled with musl libc, or
even smaller than the source file with diet libc). -
Cross-compiled binaries now available thanks to
binarybuilder.org -
Improved search path printing when libraries cannot be located.
-
Improved rpath search: shows
[rpath of ...]
when lib is located by parent
of parent ... of parent's rpath. -
fd
inspired highlight of filename when printing paths. -
Caches files by inode instead of soname, which is useful in the sense that
this allows you to find broken libraries that only work because of a
particular search order of the tree. (Consider an executable A and libraries
B, C and D, where A depends on B and C, and B and C depend on D:B / \ A D \ / C
It may happen that D can be located through B's rpath, but not through C's.
Then, depending on whether A - B - D is traversed first, or A - C - D, ld.so
will complain about missing libraries or not.libtree
on the other hand
will always tell you that D can't be located through C. -
More verbosity levels
-v
,-vv
,-vvv
instead of-a
and-v
flags. -
Skip fewer libraries by default (only libc / libstdc++ type of libs).
-
PLATFORM
rpath interpolation now usesuname
, this is not always the same
asAT_PLATFORM
, but unlikely to be different, and in fact the feature is
rarely used. -
Support for
NODEFLIB
flag, which is a dynamic array entry flag that signals
to the dynamic linker that it should not search default system paths
including those specified inld.so.conf
. -
Better FreeBSD support (
OSREL
,OSNAME
interpolation in rpaths and
/etc/ld-elf.so.conf
config file support) -
Support for relative includes in
ld.so.conf
config files.
Breaking changes:
- The bundling feature was dropped in
3.0.0
, but is still supported in2.x
.
It may return in a future3.x
release, but my impression is that there are
excellent tools like Exodus which do a better job at bundling (in particular:
they ship a copy of the dynamic linker.) - The
--skip
and--platform
flags were removed.
50262cce5523ed0e19e38d563e9eacf69aa4921e01cd9735d96d05d0c1fc3018 libtree_aarch64
2341ff61152056b3f72776983d27ee8620c61e5f5476454a40ab909cfbcbcc85 libtree_armv6l
f3801b197a3ea192697a13d62cb653d5603a68f34cd9350d8ea717184614dde0 libtree_armv7l
28c080c70715a3c1b5354e8de04f6edeb3fd9e6e840c9de7bd28ef2f23b3b16b libtree_i686
6acee10fd0a9bf18f71f5cb9cc1a41309e063d7eb682f8425355d1346f8c5a13 libtree_x86_64
Thanks to @orbea test-driving this version and improving the Makefile