Shared libraries in Linux in welchen Path

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Benutzeravatar
Zvoni
Beiträge: 371
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Shared libraries in Linux in welchen Path

Beitrag von Zvoni »

Socke hat geschrieben: Mi 18. Sep 2024, 10:39 Damit ein vollständiges Bild herrscht:
  • Beim statischen Linken werden die Bibliotheken durch den Linker direkt in das Executable eingebunden. Ein Nachladen zur Laufzeit ist nicht notwendig - das passiert mit allen im Programm verwendeten Free Pascal Units.
  • Beim dynamischen Linken unterscheidet man zwischen early binding und late binding
    • Beim early binding wird dem Compiler/Linker mitgegeben, welche Bibliothek und welche Funktionen daraus genutzt werden. Diese Informationen werden in die Programmdatei geschrieben, sodass der Betriebssytemlinker beim Programmstart (bevor der Code darin ausgeführt wird) die Bibliotheken suchen und nachladen kann. Warf hat das Verfahren gut beschrieben/zitiert. Über den beschriebenen Mechanismus kann man gut kontrollieren, welche Programme welche Bibliotheken finden. Wird die Umgebungsvariable LD_LIBRARY_PATH in einem Shell Script vor Programmstart gesetzt wird, gilt sie auch nur dort und nicht für das ganze System.
    • Beim late binding gibt das Programm zur Laufzeit dem Betriebssystem mit, welche Bibliotheken geladen werden soll. Da das Programm selbst die Anweisungen dazu gibt, muss das early binding bereits abgeschlossen sein und das Program läuft bereits. Die Funktionen dazu sind LoadLibrary() und GetProcedureAddress(). Dieses Verfahren erlaubt ein granulares Fehlerhandling durch den Programmierer (andere Orte/Bibliotheken/Versionen der selben Bibliothek suchen/ausprobieren), ist in der Programmierung aber deutlich aufwändiger. Es bietet sich daher bei optionalen Bibliotheken oder Plugins an.
Endlich habe ich mal "Namen" für die Verfahren.
Danke. Wieder was dazu gelernt
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten