[lug-ld] Was macht ldconfig?

alf at alfmoni.de alf at alfmoni.de
Mi Nov 5 04:41:19 CET 2014


Hallo Ekki,

das ganze dreht sich um die "shared libraries". Dein Programm hat bei 
der Installation seine library in das Verzeichnis /usr/local/lib 
abgelegt. Das alleine reicht aber nicht aus, um das Programm starten zu 
können.

Hintergrund ist, dass ein Programm erst startet, wenn es alle libraries 
im Arbeitsspeicher gefunde/geladen hat. Ist diese library nicht im 
Arbeitsspeicher wird sie nachgeladen. Für diesen Vorgang ist nicht das 
Programm selbst zuständig, sondern "ld.so" der sogenannte "dynamische 
Linker und Lader".
Wenn du jetzt neue Programme installierst welches neue libraries anlegt, 
muss das der library Verwaltung mitgeteilt werden.

Zuerst musst du das Verzeichnis, wo die neuen libraries installiert 
wurden in die Datei "/etc/ld.so.conf" eintragen.
Danach startest du das Programm "ldconfig".
ldconfig ist für die interne Verwaltung der libraries und des 
library-cache zuständig und überprüft ob neue libraries hinzugekommen 
sind. Durch das eintragen deines Pfades in der /etc/ld.do.conf wird 
dieser in den library-cache, den du in der Binärdatei /etc/ld.so.cache 
findest, hinzugefügt.

Erst jetzt ist ld.so in der Lage die richtigen libraries laden.

Übrigens, mit dem Befehl "ldd /pad/zu/deinem/programm" listet dir auf, 
welche libraries das Programm benötigt und wo diese zu finden sind.

lg
Alf



Am 04.11.2014 23:42, schrieb Ekki Plicht (DF4OR):
> Tag.
> Es ist ja so ruhig hier... Ich hoffe, ich störe nicht :)
>
>
> Ich würde gerne mal wissen, was 'ldconfig' genau macht und wann man 
> das anwenden muss.
>
> Hintergrund:
> Ich habe unjüngst ein Programm, das nicht als Package für Arch 
> existiert, selber compiliert und installiert. Das hat auch alles 
> geklappt, die fertige library ist dann in /usr/local/lib gelandet.
>
> Dort hat sie dann aber das Programm, das diese Lib nutzt, nicht 
> gefunden. Der Programmautor meinte nun auf Anfrage dass das nicht in 
> seinem Einflussbereich läge, ich müsste meine Linker-Konfiguration 
> anpassen und dann ldconfig laufen lassen.
>
> Ich habe daraufhin mal die man-Page von ldconfig angeguckt... Ok, da 
> gibt's ne /etc/ld.so.conf und /etc/ld.so.conf.d/ usw. Da steht aber 
> nur ein Eintrag drin, '/usr/lib/libfakeroot'. Was immer das heissen 
> mag. So richtig verstanden, was da passiret habe ich aber leider nicht.
>
>
> Was müsste ich denn wo drehen, damit a) entweder der Linker neue Libs 
> nicht nach '/usr/local/lib/' sondern nach '/usr/lib/' schmeisst, oder 
> b) dass ein Programm seine Libs auch in '/usr/local/lib/' sucht.
>
> Danke,
> Ekki
>
>
>
> _______________________________________________
> lug-ld mailing list
> lug-ld at lists.lug-ld.de
> http://lists.lug-ld.de/mailman/listinfo/lug-ld

-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://lists.lug-ld.de/mailman/private/lug-ld/attachments/20141105/768fb495/attachment.htm