Woher weiß ein Programm, wo sich die gemeinsam genutzten Bibliotheken befinden, ohne LD_LIBRARY_PATH

322
user322908

Ich habe ein Programm foobar, das gemeinsam genutzte Bibliotheken verwendet. Ich setze mich LD_LIBRARY_PATHrichtig ein und laufe dann

>ldd foobar 

Ich kann sehen, dass es vollständige Pfade zu allen Bibliotheken kennt, die es benötigt.

Jedoch auf einigen Systemen ( „größer“ ist), brauche ich nicht LD_LIBRARY_PATHfür lddwissen, wo die Bibliotheken sind, und auf einigen ( „kleinen“ ist) ich.

Auf beiden Systemen ist die ausführbare Datei foobaridentisch, der Pfad dazu ist derselbe, und alle Bibliotheken und Pfade zu ihnen sind gleich.

Das heißt, das rpathin die ausführbare Datei eingebaute, ist in beiden Fällen gleich.

Es muss also einen anderen Weg geben, um herauszufinden, wo sich die Bibliotheken befinden. Was ist es?

2

2 Antworten auf die Frage

0
cmevoli

Die / lib und / usr / lib werden automatisch hinzugefügt. Andere Bibliotheken werden aus der Datei /etc/ld.so.conf hinzugefügt.

0

ldconfigist ein Dienstprogramm, das einen Cache gemeinsam genutzter Bibliotheken verwaltet. Bei richtiger Konfiguration werden die richtigen Bibliothekspfade zwischengespeichert und stehen den Führungskräften zur Verfügung. Sie können ldconfig -pdie aktuell verfügbaren Bibliothekskandidaten ausdrucken.

Siehe die Manpage für ldconfig(8).