[lug-ld] Was macht ldconfig?

Jean-Jacques Sarton jj.sarton at t-online.de
Mi Nov 5 17:45:25 CET 2014


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo,

zusätzlich zur bereits gegebene Informationen wäre noch
die Variable LD_LIBRARY_PATH zu erwähnen.

Wir diese Variable bei den Aufruf eines Programms gesetzt,
werden als ersten die Bibliotheken genommen die in den
Pfaden die in der Variable angegeben sind benutzt.

Beispiel:

LD_LIBRARY_PATH=/home/user/meinProgramDir:/usr/local/lib
/home/user/meinProgramDir/meinProgram

Damit können Bibliothecken die nur für meinProgram gelten
in  separater Verzeichniss gehalten werden.
Google-Chrome und acroread nutzen diese Variable.

Jean-Jacques

Am 05.11.2014 um 14:11 schrieb Christian Boltz:
> Hallo Ekki, hallo zusammen,
> 
> vorweg @Uwe: Die monatlichen Treffen finden im Vier Jahreszeiten in
>  Landau statt - ruf am Besten direkt dort an und frage, ob Hunde
> erlaubt sind.
> 
> Am Dienstag, 4. November 2014 schrieb Ekki Plicht:
>> Tag. Es ist ja so ruhig hier... Ich hoffe, ich störe nicht :)
> 
> Huch! Eine Mail! *aufschreck*
> 
>> Ich würde gerne mal wissen, was 'ldconfig' genau macht und wann
>> man das anwenden muss.
> 
> Die technischen Details hat Alf schon erklärt, und zur Wahl des 
> Verzeichnisses verweise ich auf die Antwort von Uwe.
> 
> Bleibt noch die Frage zu /etc/ld.so.conf und /etc/ld.so.conf.d/
> 
>> 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.
> 
> In /etc/ld.so.conf und /etc/ld.so.conf.d/*.conf stehen
> Verzeichnisse, die Libraries enthalten. Stell Dir das Ganze als
> $PATH für Libraries vor ;-)
> 
> Du kannst also einfach folgendes machen: echo /usr/local/lib >
> /etc/ld.so.conf.d/usr-local-lib.conf
> 
> Anschließend einmal "ldconfig" aufrufen. Das durchsucht alle 
> Verzeichnissen, die in /etc/ld.so.conf{,d/*.conf} gelistet sind.
> Laut Manpage werden zusätzlich auch /lib und /usr/lib mit
> aufgenommen, auch wenn sie nicht in den Konfigurationsdateien
> stehen.
> 
> Die Liste aller gefundenen Libraries wird von ldconfig in 
> /etc/ld.so.cache geschrieben. Aus der Manpage ldconfig(8):
> 
> /etc/ld.so.cache File containing an ordered list of libraries found
> in the directories specified in /etc/ld.so.conf, as well as those
> found in /lib and /usr/lib.
> 
> Der Umweg über ldconfig bzw. /etc/ld.so.cache ist nötig, damit
> nicht jedes Programm bei Start alle Verzeichnisse in
> /etc/ld.so.conf{,d/*} abklappern muss - das würde den Programmstart
> vermutlich deutlich verlangsamen.
> 
> 
> Gruß
> 
> Christian Boltz
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAlRaVCUACgkQM9JbiR3CwQsBWQCfam1kIPVIElYU2nHI5sDcqOO1
w4IAnA3+cli3JfeWfIclTcJyHD00RPbJ
=ESHr
-----END PGP SIGNATURE-----