[lug-ld] Was macht ldconfig?

Christian Boltz lug-ld at cboltz.de
Mi Nov 5 14:11:37 CET 2014


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
-- 
Ossi-Virus
Güdn tog, isch bün än Häggr aüs Läibzsch un dis is än selbsdprögammirdr
bösardscher Gommbjudrfirus. Do isch nö nit sö vül wäis von döm Gommbjudr
is dis än mänuoöllr Firus. Alsö löschnse bidde ölle Dodein fön de
Fesdpladde und schiggnse disn Firus ön ölle di se genn.
- Dangge für de Midorbeid -