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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.