math.h Problem
-
Hi!
Ich programmiere unter Eclipse 3.5.1 CDT mit GCC (unter Ubuntu). Unter Windows lief mein Programm, aber jetzt erhalte ich einen tollen Fehler:
double test = 3.7; angle = atan(test);
Hier sagt der Compiler:
.../Debug/../src/DrawLib.c:162: undefined reference to `atan'
Das hier klappt aber:
angle = atan(3.7);
math.h ist natürlich included...
Bin ich jetzt völlig Banane?
-
kpl. warum das so ist, bzw. warum es auch ohne geht. ich schätze das die konstante da zur compile zeit bekannt, als return wert in dem programm gespeichert wird also statt "atan(3.7)" steht "11.306833" in deinem compilat daher benötigst du die atan() nicht und bekommst keinen fehler, verwendest du eine variable also "double ..." schickt er es durch die "atan()" die er nicht findet da du die math library nicht gelinkt hast und du bekommst einen fehler. also versuch mal "gcc ... -lm" dann sollte das klappen
lg lolo
-
also bzw. unter eclipse mir rechtsclick auf deinen projekt ordner dann auf properties, im linken tree menue C/C++ Build ausklappen dann auf Settings, im tab Tool settings GCC C Linker ausklappen und dann auf Librarys, dann wo "Libraries (-l)" steht auf das grüne +, m eingeben enter und fertig
hoffe das war verständlich
-
Wunderbar, danke für die verständliche Erklärung!
Ich frage mich allerdings, warum ich jetzt diese math library linken muss, wo ich doch sonst keine libraries linken muss..
-
ich denke die anderen werden auch gelinkt allerdings implizit, also -lc wird automatisch angehängt, die functionen in der math.h kann man sich evtl. aus functionen der -lc zusammen bauen, daher sind sie nicht automatisch dabei, und du musst sie explizit mit -lm angeben... hab aber keine ahnung
evtl. klärt uns noch jemand auf