The ldd on my system is a script:
$ ldd --version
ldd (GNU libc) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
$ file /usr/bin/ldd
/usr/bin/ldd: Bourne-Again shell script, ASCII text executable
$ head -n 29 /usr/bin/ldd|tail
# This is the `ldd' command, which lists what shared libraries are
# used by given dynamically-linked executables. It works by invoking the
# run-time dynamic linker as a command and setting the environment
# variable LD_TRACE_LOADED_OBJECTS to a non-empty value.
# We should be able to find the translation right at the beginning.
TEXTDOMAIN=libc
TEXTDOMAINDIR=/usr/share/locale
RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-x32.so.2"
At times, it fails to report anything, especially annoying when I try to figure out what dependencies are missing for a certain program.
Like today with evince
$ ldd /usr/bin/evince
$ evince
evince: error while loading shared libraries: libhandy-1.so.0: cannot open
shared object file: No such file or directory
Any idea why ldd reports nothing? I know from past experiences with this issue that when I solved the 1st missing dependency (in this case: installing libhandy-1.so.0) then ldd would show the list of dependencies, including listing possible several other missing libraries. But I want ldd to work correctly from the very beginning. Sadly I have no clue how to fix that since ldd looks too complex a script for me to easily understand, and since it reports nothing at all I have not even a hint where it went wrong.
0 Answers