[lug-ld] Was macht ldconfig?
Jean-Jacques Sarton
jj.sarton at web.de
Mi Nov 5 14:53:24 CET 2014
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
>