- Build system portability fixes
- Fix make check exit code
- Add a
--max-depthflag to limit recursion depth. For example,libtree --max-depth 1 <file>will show the resolved direct dependencies only.
- Build system portability fixes
- Fix
make checkexit code
libtree -vvvv...is now treated aslibtree -vvv.
- Improve
make check,make cleanand CI - Preserve original timestamps when installing files
- Add rpath order test
- Fix man pages directory in
make install - Skip dynamic linker on aarch64 and powerpc
-
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. -
fdinspired 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 \ / CIt 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.
libtreeon the other hand will always tell you that D can't be located through C. -
More verbosity levels
-v,-vv,-vvvinstead of-aand-vflags. -
Skip fewer libraries by default (only libc / libstdc++ type of libs).
-
PLATFORMrpath 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
NODEFLIBflag, 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,OSNAMEinterpolation in rpaths and/etc/ld-elf.so.confconfig file support) -
Support for relative includes in
ld.so.confconfig files.
Breaking changes:
- The bundling feature was dropped in
3.0.0, but is still supported in2.x. It may return in a future3.xrelease, 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
--skipand--platformflags were removed.
- No changes to the libtree API
- Provide static executables for ease of use on distros with an old glibc or musl.
- Dropped the dependency on
cppglob, use posixglobinstead. - No more vendored dependencies, rely on
find_packageto findcxxopts,elfio, andtermcolor.