Các thư viện động được tải bởi kernel, các đường dẫn không được mã hóa cứng trong một chương trình. Một chương trình chỉ nói "Tôi cần libc.so.6". Hệ thống sau đó tìm kiếm trong các đường dẫn thư viện như được định nghĩa trong /etc/ld.so.conf, bao gồm /usr/libvà /libtheo mặc định. Tập tin này bao gồm các tập tin cấu hình bổ sung trong /etc/ld.so.conf.d.
Trên hệ thống 64 bit của tôi, libc.so.6có thể được tìm thấy /lib/x86_64-linux-gnu/libc.so.6do đường dẫn được xác định trong /etc/ld.so.conf.d/x86_64-linux-gnu.conf:
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Để tìm hiểu thư viện nào được tải bởi một chương trình, sử dụng lddnhư trong 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)
Đặt symlink sẽ không phá vỡ bất cứ điều gì.
Để có danh sách các thư mục được tìm kiếm, hãy chạy:
ldconfig -v -N | grep '^/'
-vlàm cho một danh sách các tập tin + thư mục được hiển thị, -Nngăn bộ đệm ( /etc/ld.so.cache) được tạo lại.