Libraries erstellen und Verwenden

Eine Library ist eine Sammlung von Funktionen, die nicht zu einem Programm kompiliert werden, sondern nach dem Kompilieren als eine Art Werkzeugkiste zur Verfügung stehen. Ein Programm kann anschließend die Funktionen der Library verwenden, ohne diese selbst mitkompilieren zu müssen.

Man kann Libraries in drei Gruppen einteilen:

Statische Libraries

Diese werden fest zum Programm kompiliert, so dass am Schluss nur eine ausführbare Datei entsteht, die Programm und Library enthält.

Eine statische Library ist eine einfache Sammlung von Object Files, die in einem Paket zusammengepackt werden. Ihr Vorteil ist, dass sie einfach zum Programm hinzugelinkt werden können, ohne dass man sie laufend neu kompilieren muss. Dieser Vorteil mit der Verwendung eines Build-Systems wie Make überholt, dennoch eignen sie sich, um Teilprojekte auszugliedern, in größeren Projekten Aufgaben zusammenzufassen und dadurch, dass weniger Dateien zusammengelinkt werden müssen, die Arbeitszeit des Linkers etwas zu beschleunigen.

Im Vergleich zu Shared- oder Dynamic Loaded Librarys sind sie geringfügig schneller, da die Aufrufe an statische Adressen erfolgen können.

Shared Libraries

Eine Shared-Library ist eine Funktionssammlung, die von mehreren Programmen verwendet werden kann. Sie wird also nicht mit einem Programm zusammengepackt, sondern von beliebig vielen Programmen vom Start geladen. Der Vorteil ist hier, dass der Code nur einmal im Speicher liegen muss und die einzelnen Programme damit kleiner werden. Shared Libs werden vom Betriebssystem während der Startphase eines Programms geladen, noch bevor die Startroutine (main) aufgerufen wird.

Dynamic Loaded Libraries (DLL)

Diese können zur Programmlaufzeit nachgeladen werden und beispielsweise die Funktionalität des Programm erweitern, ohne dass es neu gestartet werden muss, oder beim Kompilieren schon wissen müsste, wieviele Erweiterungen vorhanden sind. Plugins lassen sich so realisieren. Unter Windows wird diese Libraryform mit der Dateiendung .dll bezeichnet.