When we run ldd on some file, there are two possible results:
If the file is dynamic executable, the shared dependencies are shown, for example:
# ldd /usr/bin/sleep
linux-vdso.so.1 (0x00007ffff7fc7000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007ffff7dd6000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffff7fc9000)
Or, if the file is either a static executable or not an executable at all, we see not a dynamic executable, for example
# ldd /usr/bin/toybox
not a dynamic executable
# ldd /etc/shadow
warning: you do not have execution permission...
not a dynamic executable
But I have also discovered a special case! It takes place if you ever happen to invoke ldd on /usr/sbin/ldconfig. Then, ldd will explicitly say that the binary is statically linked!
# ldd /usr/sbin/ldconfig
statically linked
I'm very interested to know why this happens, what's so special about the ldconfig binary? Thanks.