Forum: Mikrocontroller und Digitale Elektronik math.h


von Marcel (Gast)


Lesenswert?

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

von Rufus T. Firefly (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

@Marcel: Welche IDE verwendest du?

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
Noch kein Account? Hier anmelden.