[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-----