Dynamische Bibliotheken werden vom Kernel geladen, die Pfade werden in einem Programm nicht fest codiert. Ein Programm sagt nur "Ich brauche libc.so.6". Das System sucht dann in Bibliothekspfaden, wie in /etc/ld.so.conf
einschließlich /usr/lib
und /lib
standardmäßig definiert. Diese Datei enthält zusätzliche Konfigurationsdateien in /etc/ld.so.conf.d
.
Auf meinem 64-Bit-System libc.so.6
kann /lib/x86_64-linux-gnu/libc.so.6
aufgrund des Pfades in gefunden werden /etc/ld.so.conf.d/x86_64-linux-gnu.conf
:
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Um herauszufinden, welche Bibliothek von einem Programm geladen wird, verwenden Sie ldd
wie folgt 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)
Das Setzen des Symlinks würde nichts kaputt machen.
Führen Sie Folgendes aus, um eine Liste der durchsuchten Verzeichnisse zu erhalten:
ldconfig -v -N | grep '^/'
-v
Bewirkt, dass eine Liste mit Dateien und Verzeichnissen angezeigt wird, und -N
verhindert , dass der Cache ( /etc/ld.so.cache
) neu erstellt wird.