Kann mir mal jemand sagen, was der Unterschied zwischen static und monolitihic ist ? Bzw.: Was ist eine Monolithic-Lib ?
Der Begriff monolithisch (aus dem griechischen, bedeutet so viel wie "ein Stein" oder "aus einem Stück") wird i.d.R. im Zusammenhang mit dem Erstellen von Programmen verwendet, die auf Plattformen laufen sollen, die das Konzept dynamische Libraries ("DLL") kennen, wie u.a. Windows. Ein monolitisches Programm wird mit "statischen" Libraries gelinkt und enthält dadurch möglichst wenige Abhängigkeiten von dynamischen Libraries. Das Gegenstück dazu ist ein "dynamisch gelinktes" Programm, das verwendet anstelle von "statischen" Libraries sogenannte Importlibraries, die nur Funktionsrümpfe enthälten und dafür sorgen, daß der tatsächliche Code zur Laufzeit aus einer dynamischen Library hinzugeladen wird. Damit wird klar, daß das monolithische Programm auch bei fehlenden oder inkompatiblen dynamischen Libraries auf dem System funktioniert, während ein dynamisch gelinktes Programm vom Vorhandensein aller benötigten DLLs in der korrekten Version abhängig ist. Für die Programmierung von Microcontrollern ist diese Unterscheidung nicht relevant, da auf diesen das Konzept der dynamischen library nicht verwendet wird. Libraries, die im Zusammenhang mit der Microcontrollerprogrammierung verwendet werden, sind immer "statische" Libraries. Hier kann man noch anhand der Art des Aufbaus der Library Unterscheidungen treffen. Wenn jede Funktion, die in einer Library enthalten ist, beim Erstellen der Library in einem eigenen Sourcefile untergebracht war, enthält die Library also für jede der Funktionen einen eigenen Objektcodeabschnitt. Sind mehrere Funktionen in einem Sourcefile zusammengefasst, landen diese auch in der Library in einem gemeinsamen Objektcodeabschnitt. Das ist beim Linken relevant; der Linker extrahiert aus der Library alle benötigten Objektcodeabschnitte und fügt diese zusammen. Der resultierende Programmcode wird kleiner, wenn die Library aus vielen kleinen Objektcodeabschnitten besteht, als wenn sie aus wenigen größeren zusammengesetzt ist. Eine Library, die aus einem oder sehr wenigen großen Objektcodeabschnitten zusammengesetzt ist, könnte man in diesem Kontext als "monolithisch" bezeichnen. Wobei die geschilderten Probleme bei neueren Linkern abgeschwächt werden, da diese auf Funktionsebene linken können, also unterhalb der Objektcodeabschnittebene.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.