Logarithmus in Atmel Studio

Gast #3552101
Lesenswert?

>bekomme ich beim kompillieren den fehler: undefined reference to 'log'
>
>Weiß jemand was falsch ist?

Du musst die Math Library dazulinken. Das macht man in den
Linkeroptionen mit -lm oder libm.a irgendwo beim Linker
eingeben.
Gast #3552300
Lesenswert?

Ich habe schon einige Header files inkludiert und Funktionen davon 
verwendet (z.b. Compiler.h oder string.h) und nie was beim linker 
ferstellen müssen. Warum muss ich nun auf einmal bei math.h was beim 
linker einstellen?
Gast #3552303
Lesenswert?

weil das nun mal bei C so ist.

Zu jeder Lib gibt es auch ein Header. Die Stringfunktionen sind aber in 
er libc enthalten und diese wird immer mit gelinkt.

mit #include bindet man keine lib ein, sondert nur ein headerfile. Die 
Lib muss immer dem Linker übergeben werden.
#3552316
Lesenswert?

Atmel Studio:

Geh auf den Menüpunkt 'Project'
Im Menü das herunter klappt, ganz unten dann '"dein Projekt" 
Properties', wobei "dein Projekt" der Name deines Projektes ist.

Alternativ kannst du auch einfach Alt+F7 drücken.

Im Fenster dann in der linken Tableiste "Toolchain"
In der Spalte links daneben "AVR GNU Linker" und da wiederrum den 
Unterpunkt "Libraries"

Darauf hin siehst du zwei Eingabefelder, das obere "Libraries", das 
untere "Libary Search Path". Du willst das obere.

Die Libary, die du haben willst hat den Namen libm.a
Das willst du aber so nicht reinschreiben, denn die Namensteile 'lib' 
und '.a' sind obligatorisch. Du musst im Feld also einfach nur "m" 
eintragen.
Gast #3552320
Lesenswert?

Hmmm, keine Ahnung was du da machst oder auch nicht, aber hier mal ein 
Code-Snippet der bei mir in Atmel Studio 6.1 fehlerfrei* funktioniert, 
ohne irgendwas an den Linkeroptionen oder sonst wo rumfummel zu müssen.
1
#include <math.h>
2

3
int main(void)
4
{
5
  double x = 0;
6
    while(1)
7
    {
8
        x=log(345.678);
9
    }
10
}

(*fehlerfrei: abgesehen von "warning: variable x set, but not used" )

Grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren