Closed fzakaria closed 2 years ago
Thanks, I addressed this in the C rewrite, see https://github.com/haampie/libtree-in-c (soon to be moved to this repo).
Typically when libc / stdc++ / gcc_s type of libs are hidden, output fits to the screen, this is what I care about.
libtree 2.0.0 hides many more libraries, which I now think is a mistake. The reason for this is that the list was originally taken from what AppImage people use when bundling Qt applications.
Currently the line count of ldd is typically inbetween libtree
and libtree -v
. Maybe one additional verbosity mode would not hurt: print all libraries, but only once. Then libtree should have the same verbosity as ldd, but printed as a pruned tree.
Finally, the C rewrite has one more level of verbosity already, and also prints the exclude list:
# ./libtree --help
Show the dynamic dependency tree of ELF files
Usage: libtree [OPTION]... [FILE]...
-h, --help Print help info
--version Print version info
File names starting with '-', for example '-.so', can be specified as follows:
libtree -- -.so
A. Locating libs options:
-p, --path Show the path of libraries instead of the soname
-v Show libraries skipped by default*
-vv Show dependencies of libraries skipped by default*
-vvv Show dependencies of already encountered libraries
*) For brevity, the following libraries are not shown by default:
libc.so, libpthread.so, libm.so, libgcc_s.so, libstdc++.so,
ld-linux-x86-64.so, libdl.so.
FWIW I find it cool to see the whole tree:
❯ ./result/bin/libtree /nix/store/2r14xjbp68pvsw44hj9xjy39vmid6vq4-ruby-2.7.4/bin/ruby
ruby
├── libruby-2.7.4.so.2.7 [runpath]
│ ├── libz.so.1 [runpath]
│ │ └── libc.so.6 [runpath]
│ │ └── ld-linux-x86-64.so.2 [ld.so.conf]
│ ├── libpthread.so.0 [runpath]
│ │ ├── libc.so.6 (collapsed) [ld.so.conf]
│ │ └── ld-linux-x86-64.so.2 (collapsed) [ld.so.conf]
│ ├── librt.so.1 [runpath]
│ │ ├── libpthread.so.0 (collapsed) [ld.so.conf]
│ │ └── libc.so.6 (collapsed) [ld.so.conf]
│ ├── libdl.so.2 [runpath]
│ │ ├── libc.so.6 (collapsed) [ld.so.conf]
│ │ └── ld-linux-x86-64.so.2 (collapsed) [ld.so.conf]
│ ├── libcrypt.so.1 [runpath]
│ │ └── libc.so.6 (collapsed) [ld.so.conf]
│ ├── libm.so.6 [runpath]
│ │ ├── libc.so.6 (collapsed) [ld.so.conf]
│ │ └── ld-linux-x86-64.so.2 (collapsed) [ld.so.conf]
│ ├── libc.so.6 (collapsed) [runpath]
│ └── ld-linux-x86-64.so.2 (collapsed) [runpath]
├── libz.so.1 (collapsed) [runpath]
├── libpthread.so.0 (collapsed) [runpath]
├── librt.so.1 (collapsed) [runpath]
├── libdl.so.2 (collapsed) [runpath]
├── libcrypt.so.1 (collapsed) [runpath]
├── libm.so.6 (collapsed) [runpath]
└── libc.so.6 (collapsed) [runpath]
Might be an opportunity to also hide the collapsed as well.
First off, love the tool and it's simplicity.
I am trying to compare the tool to ldd and I find the secret exclusion of "generatedExcludelist" to be confusing. There does not seem to be an optional to also include them by default.
vs