[lug-ld] Was macht ldconfig?

Uwe Seher uwe.seher at gmail.com
Mi Nov 5 07:27:44 CET 2014


Hallo!

Normalerweise kannst du beim Kompilieren mit --prefix=<PFAD> angeben, wo
das Kompilat hin soll. Im Falle einer library sollte der Pfad dann auch
ldconfig bekannt sein. Für Eigenkompilate ist es durchaus sinnvoll
/usr/local/lib zu verwenden, denn das Verzeichnis wird z.B. bei einem
Update oder Upgrade vom Paketmanager ignoriert wird. Damit bleiben die
Eigenkompilate auch danach verfügbar.

So, da ich nun aus der mitlesenden Anonymität getreten getreten eine kurze
Vorstellung: Uwe, 49, Dipl.-Geologe, Geoinformatiker und PostGIS-Nutzer,
Teilzeitadmin, Opensuse-Nutzer aus Schweighofen. Würde mich auch gerne mal
bei einem eurer Treffen einfinden, falls ich meinen Hund mitbringen kann :)

Viele Grüße

Uwe


Am 5. November 2014 04:41 schrieb alf at alfmoni.de <alf at alfmoni.de>:

>  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 listlug-ld at lists.lug-ld.dehttp://lists.lug-ld.de/mailman/listinfo/lug-ld
>
>
>
> _______________________________________________
> 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/334dd711/attachment.htm