Command to Find a Command's Shared Libraries

December 21, 2024 note-to-self

Command to find out what shared libraries an executable needs: ldd /bin/bash eg

> ldd /bin/bash
    linux-vdso.so.1 (0x0000ffff8eac2000)
    libtinfo.so.6 => /lib/aarch64-linux-gnu/libtinfo.so.6 (0x0000ffff8e8d0000)
    libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffff8e720000)
    /lib/ld-linux-aarch64.so.1 (0x0000ffff8ea85000)

When I created a chroot test, I copied /bin/bash and then did the ldd, and it was not clear on WHERE those files where, and when I tried to enter chroot (`chroot /chroot-test /bin/bash), nothing happened.

Then, I did file /bin/bash and found it's "interpreter" and did locate <interpreter .so.1 filename> and copied it into the chroot. NOW when I ran chroot /chroot-test /bin/bash, it would give me an error of a missing file, and each time I just did a locate <missing filename> and copied it into, 1 for 1 directory-wise, until I ran it without errors and was in chroot!)

Also, locate wasn't installed, so I did:

apt update -y && apt install -y locate && updatedb

Then locate <missing filename> worked.