Der Martin: Dynamische Bibliotheken fest einkompilieren?

Beitrag lesen

Hallo Markus,

Was ich dabei nicht verstehe, ist, warum beispielsweise <iostream>, <stdio.h>, o.ä. Bibliotheken in das Programm einkompiliert werden, ohne dass sich der Endbenutzer des Programms explizit darum kümmern muss, ...

weil das sogenannte Standardbibliotheken sind, die der C-Compiler mitbringt und die vermutlich in einer Default-Konfigurationsdatei oder Make-Datei mit drinstehen.

wohingegen das bei SDL.h nicht funktioniert.

Das scheint etwas zu sein, was nicht zum Standardumfang gehört. Mir sagt SDL nichts, und auf die Schnelle konnte ich auch nicht herausfinden, was es damit auf sich hat.

Würde ich versuchen mit g++ programm.cpp -o programm das Programm zu kompilieren, kann der Compiler SDL.h ohne direkte Angabe von -lSDL nicht einkompilieren.

Die Headerdatei (sdl.h) wird er schon mit eincompilieren, der Bezug ist ja durch die #include-Anweisung offensichtlich. Aber die Headerdatei enthält ja nur die Deklarationen der in diesem Modul enthaltenen Funktionen und Daten. Die Definitionen (also die Implementierungen) stecken entweder in einer vorcompilierten Bibliothek (beispielsweise als .lib), oder die Bibliothek liegt im Quellcode vor und muss mit übersetzt werden, dann würde der Linker sie in Form von Object-Dateien sehen. In beiden Fällen muss man es ihm aber mitteilen, da der Linker keinen Einblick mehr in den Quellcode hat.

Schönen Sonntag noch,
 Martin

--
Butterkeksverteiler zu werden ist vermutlich eine der wenigen beruflichen Perspektiven, die sich noch bieten, wenn man einen an der Waffel hat.