Den Cache für gemeinsam genutzte Bibliotheken mit ldconfig -p anzeigen
Im vorherigen Schritt haben Sie den Befehl find
verwendet, um das gesamte Dateisystem nach einer Bibliothek zu durchsuchen, was langsam sein kann. Um den Prozess der Lokalisierung von gemeinsam genutzten Bibliotheken zu beschleunigen, pflegen Linux-Systeme eine Cache-Datei, die sich typischerweise unter /etc/ld.so.cache
befindet. Dieser Cache enthält eine kompilierte Liste von gemeinsam genutzten Bibliotheken, die in Standard-Systemverzeichnissen verfügbar sind, wodurch Programme ihre Abhängigkeiten wesentlich schneller laden können.
Der Befehl ldconfig
ist das primäre Werkzeug zur Verwaltung dieses Caches. Um den Inhalt des aktuellen Bibliotheks-Caches anzuzeigen, können Sie die Option -p
(print) verwenden.
Führen Sie den folgenden Befehl aus, um alle vom Cache erkannten Bibliotheken anzuzeigen:
ldconfig -p
Die Ausgabe wird ziemlich lang sein, da ein typisches System viele gemeinsam genutzte Bibliotheken hat. Der Befehl listet die Anzahl der gefundenen Bibliotheken auf und gibt dann jede einzelne aus. Hier ist ein kleines Beispiel, wie die Ausgabe aussieht:
1234 libs found in cache `/etc/ld.so.cache'
libzstd.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzstd.so.1
libz.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so.1
libz.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so
libyield.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libyield.so.2
...
libc.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libc.so.6
...
Jede Zeile zeigt den Bibliotheksnamen, seine Architektur und ABI (z. B. libc6,x86-64
) sowie den vollständigen Pfad zur Bibliotheksdatei an.
Um das Durchscrollen der gesamten Liste zu vermeiden, können Sie die Ausgabe an grep
weiterleiten, um nach einer bestimmten Bibliothek zu suchen. Suchen wir den Eintrag für libc.so.6
, mit dem wir gearbeitet haben:
ldconfig -p | grep libc.so.6
Dies filtert die Liste und zeigt Ihnen nur die Einträge an, die sich auf libc.so.6
beziehen:
libc.so.6 (libc6,x86-64, OS ABI: Linux 3.2.0) => /lib/x86_64-linux-gnu/libc.so.6
Wie Sie sehen können, ist dies eine wesentlich schnellere und direktere Methode, den Speicherort einer gecachten Bibliothek zu finden, als das gesamte Dateisystem zu durchsuchen. Die Ausgabe zeigt nicht nur den Bibliotheksnamen und den Pfad, sondern auch Architekturinformationen (libc6,x86-64
) und die OS ABI-Kompatibilität (OS ABI: Linux 3.2.0
). Dieser Cache wird jedoch nicht automatisch in Echtzeit aktualisiert. Wenn Sie eine neue Bibliothek installieren, müssen Sie den Cache aktualisieren, damit das System sie finden kann. Im nächsten Schritt lernen Sie, wie Sie genau das tun.