Forum: Compiler & IDEs EMBITZ math.h


von Max (Gast)


Lesenswert?

Hallo Zusammen,

ich verwende embitz als IDE und habe die math.h eingebunden. Wenn ich 
z.B. sin verwende dann bekomme ich die Fehlermeldung undefined reference 
to sin. Ich habe einige Artikel zum gcc gefunden mit dem Hinweis im 
Linker die option -LM zu verwenden. Wo zum Teufel macht man das in 
embitz ?

Hoffe jemand ist schon einmal dagegen gerannt.

Besten Dank

von Markus F. (mfro)


Lesenswert?

Max schrieb:
> Ich habe einige Artikel zum gcc gefunden mit dem Hinweis im
> Linker die option -LM zu verwenden. Wo zum Teufel macht man das in
> embitz ?

Bei embitz kann ich dir nicht helfen, aber ich kann dir verraten, daß 
die Option nicht -LM, sondern -lm heisst.

von STM Apprentice (Gast)


Lesenswert?

Max schrieb:
> Hoffe jemand ist schon einmal dagegen gerannt.

Wenn ich in einem existierenden Embitz Projekt (F407) mit
1
#include <math.h>

die Header-Datei hereinziehe und einen Sinus berechnen
lasse geht das ohne weitere Mühen bzw Fehlermeldungen.

Deswegen schlage ich vor du baust ein Minimal-Projekt und
postest das hier, dann kann man sehen was schief läuft.

von Max (Gast)


Angehängte Dateien:

Lesenswert?

Hat ein bischen gedauert. Ich habe das Ganze mal auf eine "main" 
reduziert und damit kann man den Fehler sehen. Test Programm im Anhang.

Es geht um folgende Berechnung / code
1
    for (int i = 0; i < 320; i++) {                                       // Sinus zeichnen
2
        double s = SineAmplitude * sin ((long double) i / SineFrequency);
3
        printfTiny ("SINUS %i %i ", i, (int) s);
4
//        ILI9341_DrawPixel (i, 75 + (int) s ,YELLOW);
5
//        ILI9341_DrawPixel (i, 175 + (int) s ,GREEN);
6
    }

Wie man erahnen kann möchte ich einen Sinus auf einem Display zeichnen. 
Dieser Code funktioniert unter AVR Studio gcc einwandfrei. Hier unter 
EmBitz kommt es zum besagtem Fehler. Ich habe die Ausgabe hier auf die 
UART gemacht.

Wenn ein Beispiel Projekt gewünscht wird bitte sagen. Ich kann auch 
gleich das EmBitz Projekt hochladen (wenn man es braucht).

von STM Apprentice (Gast)


Lesenswert?

Max schrieb:
> Wenn ein Beispiel Projekt gewünscht wird bitte sagen.

Ja, aber das hatte ich schon gesagt.

von Johannes S. (Gast)


Lesenswert?

Für ein printf bist du zu geizig, aber rechnest mit Long Double um es 
dann nach int zu casten?

von Max (Gast)


Angehängte Dateien:

Lesenswert?

Projekt siehe Anhang.

von Max (Gast)


Lesenswert?

>> Für ein printf bist du zu geizig, aber rechnest mit Long Double um es
>> dann nach int zu casten?

Hast du zur Lösung was beizutragen ? Das ist ein Beispiel.

von Felix F. (wiesel8)


Lesenswert?

Hallo,
gehe auf Project->Build Options. Sieht dann so aus: 
https://www.mikrocontroller.net/wikifiles/5/5c/Fpu_2.png

Dort dann auf Linker-settings und -lm eintragen.

mfg

von Max (Gast)


Angehängte Dateien:

Lesenswert?

>> Dort dann auf Linker-settings und -lm eintragen.
Wo in Linker Settings ?

Siehe Screenshots, ich bekomme dann einen anderen Fehler.

von Felix F. (wiesel8)


Lesenswert?

Du hast kein Device definiert. Wie hast du das Projekt erstellt? Über 
den Wizard wird das alles automatisch gemacht.
Zeig mal die Ausgabe des Build Logs.

mfg

: Bearbeitet durch User
von Max (Gast)


Lesenswert?

Doch, ich habe den Wizard verwendet und sehr wohl ein Device angelegt. 
Das Projekt habe ich ja hochgeladen, verwende es doch einfach und schau 
selbst.

von Felix F. (wiesel8)


Angehängte Dateien:

Lesenswert?

Hab dein Projekt heruntergeladen, das Flag eingefügt und kompiliert.
Ergebnis im Anhang. Wieso verschwendest du meine Zeit??

mfg

: Bearbeitet durch User
von STM Apprentice (Gast)


Angehängte Dateien:

Lesenswert?

Max schrieb:
> Doch, ich habe den Wizard verwendet und sehr wohl ein Device angelegt.

Hab mal ein leeres Projekt angelegt und deine Source main.c
hineinkopiert. Dann noch das -lm Flag gesetzt. Das lässt sich
dann einwandfrei compilieren.

An was es genau liegt weiss ich jetzt auch nicht ....

Das angehängte Projekt Empty_Project_F103C8T6.zip ist nun
verständlicherweise nun nicht ganz empty ....

von STM Apprentice (Gast)


Lesenswert?

Felix F. schrieb:
> Wieso verschwendest du meine Zeit??

Da kann man noch in die Falle stolpern dass es das Flag für
Debug- und Release-Version getrennt setzbar gibt.

Vielleicht ist ihm das passiert.

von Max (Gast)


Lesenswert?

Danke Felix und Apprentice, jetzt geht es. Ich habe das -lm an die 
falsche Stelle getan. Danke für das Empty Projekt, damit war es dann 
klar wie es geht. Meinen Besten Dank nochmal.

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.