Wie viel Speicher braucht das Einbinden der Lib math.h? Muss ich zusätzlich noch ein Fliesskommapaket einbinden wenn ich mit der Sinusfunktion arbeiten möchte? Prozessor: MSP430 Vielen Dank
math.h ist eine Headerdatei, die belegt in einem compilierten Programm exakt 0 (null) Bytes. Werden in math.h deklarierte Funktionen verwendet, so wird der Compiler allerdings versuchen, diese zum Programm dazuzulinken. Die verwendeten Objektdateien befinden sich in der Regel in einer der zum Compiler gehörenden Standardlibraries. Die Verwendung der sinus-funktion legt den Gebrauch eines Fließkommapaketes nahe; je nachdem, wie die Standardlibraries des Compilers organisiert sind, wird dies automatisch vom Linker zum Programm hinzugefügt, wenn Funktionen daraus verwendet werden. Ob das so ist, kann man den Linkerfehlermeldungen bzw. deren Ausbleiben entnehmen. Befinden sich die Funktionen, die in math.h verwendet werden, nicht in einer der Standardlibraries, so erkennt man dies an entsprechenden Fehlermeldungen des Compilers; in dessen Dokumentation wird drinstehen, welche Libraries dann noch gezielt zu linken sind (math.lib?). Aus der Dateigröße so einer Library kann man nicht unbedingt daraus schließen, wie sich das Linken auf die finale Objektcodegröße auswirkt; ist doch eine Library potentiell die Sammlung vieler Objektdateien, aus denen nur die benötigten extrahiert werden. Der Compiler- oder Libraryhersteller entscheidet hier, wie granular diese in der Library vorhanden sind. Mit einem zum Compiler dazugehörenden Librarymanager kann man potentiell herausfinden, wie so eine Library aufgebaut ist. Wie groß nun die entsprechenden hinzugelinkten Dinge sind, lässt sich ohne Kenntnis des Compilers kaum sagen. Am einfachsten findet man sowas durch Ausprobieren und Betrachten der erzeugten Map-Dateien, Linkerreports und finaler Objektcodegröße heraus.
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.