gnu c=ansi c
-
also ich wuerde gerne die funktion sin() unter linux suse 9.3 verwenden, ich includiere auch die funktion math.h, der uebergeben wert ist auch ein double wert aber es geht nicht, beim compilieren kommt aber folgender fehler:
hallo.c:14:2: warning: no newline at end of file
/tmp/ccWitc9t.o(.text+0x36): In functionmain': /home/blut-lecker/programme/hallo.c:9: undefined reference to
sin'
collect2: ld returned 1 exit status
-
-lm beim Linken angeben.
-
danke aber geht immernoch nicht der einzige unterschied die zeile mit 'sin'
ist nicht mehr rot unterlegtblut-lecker@localhost:~/programme> gcc -Im -o hallo hallo.c
hallo.c:17:2: warning: no newline at end of file
/tmp/ccyubG4d.o(.text+0x36): In functionmain': hallo.c: undefined reference to
sin'
collect2: ld returned 1 exit status
-
hier mal der quellcode wenns hilft(is absichtlich klein gehalten
)
#include <stdio.h> #include <math.h> double log(double x); int main() { double x; x=15.0; x=sin(x); printf("%f\n",x); return 0; }
-
Das ist kein großes I sondern ein kleines l. Und normalerweise schreibt man es ganz ans Ende der Zeile. Weiß allerdings nicht, ob das einen Unterschied macht.
-
ah nun gehts aber eine frage zum verständnis was genau bewirkt "-lm" im bezug auf die headerdatei(math.h)?
Übrigens die reihenfolge is egal, also wo -lm stehtthx nochmal
-
-lfoo bindet die Library libfoo.a ein. Die mathematische Bibliothek heißt libm.a.
-
Das ist einfach eine Option für den Linker und teilt diesem mit, dass er libm dazulinken soll, in welcher sich sin() befindet.
-
aber diesen compilerbefehl muss ich nur für math.h eingeben oder etwa so einene ähnlichen befehl für jede headerdatei, die ich einbinde
sry wenn die frage dumm is bin halt ein anfänger
-
Klar ist, dass die Funktionen, die in den Headerfiles deklariert sind, irgendwo implementiert sein müssen, und das sind meist Libraries. Aber es gibt keine 1:1-Entsprechung. Meistens wird eine einzige Library durch eine Vielzahl von Headerfiles zugänglich gemacht.
-
thx au wenn ichs net so ganz verstanden habe, weil es unter windoof soetwas net gibt zumindest bei solchen kleinen programmen net
gibts irgendwo ne beschreibung welche lib ich für welche headerdatei brauch und wie der compilierbefehl heisst?