Pustaka dinamis dimuat oleh kernel, path tidak di-hardcode dalam program. Sebuah program hanya mengatakan "Saya perlu libc.so.6". Sistem kemudian mencari di jalur perpustakaan seperti yang didefinisikan dalam /etc/ld.so.conf
, termasuk /usr/lib
dan /lib
secara default. File ini termasuk file konfigurasi tambahan di /etc/ld.so.conf.d
.
Pada sistem 64 bit saya, libc.so.6
dapat ditemukan di /lib/x86_64-linux-gnu/libc.so.6
karena jalur yang didefinisikan dalam /etc/ld.so.conf.d/x86_64-linux-gnu.conf
:
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Untuk mengetahui perpustakaan apa yang dimuat oleh suatu program, gunakan ldd
seperti pada ldd /bin/bash
:
linux-vdso.so.1 => (0x00007ffff1dff000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00007f9d8b3b8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9d8b1b4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9d8ae1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9d8b61c000)
Menempatkan symlink tidak akan merusak apa pun.
Untuk mendapatkan daftar direktori yang dicari, jalankan:
ldconfig -v -N | grep '^/'
-v
menyebabkan daftar file + direktori ditampilkan, -N
mencegah cache ( /etc/ld.so.cache
) diciptakan kembali.