PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler im gcc Compiler?



Catonga
27-05-2003, 01:19
Hallo,

wenn ich folgenden programm code mit gcc
compilieren möchte:


#include <stdio.h>
#include <math.h>

int main()
{
double x;

x= asin(1.0);
return 0;
}

Dann erhalte ich folgende Fehlermeldung:



/tmp/ccq1MLyQ.o: In function `main':
/tmp/ccq1MLyQ.o(.text+0x11): undefined reference to `asin'
collect2: ld returned 1 exit status


Was läuft hier falsch?
Ist das ein Compilerfehler?

$ gcc --version
2.95.3

TheDodger
27-05-2003, 06:25
Ich habe auf keinen meiner Linux-Systeme (UL1.0 / SuSE8.x / gentoo) eine Funktion für asin gefunden.
Und das sind alles Entwicklermaschinen ...

Vielleicht kennt dein gcc diese asin() nicht und will eine entsprechende Definition haben?

Jasper
27-05-2003, 06:47
Original geschrieben von Catonga
Was läuft hier falsch?
Ist das ein Compilerfehler?


nein, du musst nur halt die math-lib hinzulinken, das ist keine default-lib:

gcc -lm ...

-j

Catonga
27-05-2003, 07:06
Original geschrieben von Jasper
nein, du musst nur halt die math-lib hinzulinken, das ist keine default-lib:

gcc -lm ...

-j

Ich dachte wenn ich die math.h Header Datei includiere wäre das
schon alles damit er die Funktion asin() benutzen kann.





Original geschrieben von TheDodger
Ich habe auf keinen meiner Linux-Systeme (UL1.0 / SuSE8.x / gentoo) eine Funktion für asin gefunden.
Und das sind alles Entwicklermaschinen ...

Vielleicht kennt dein gcc diese asin() nicht und will eine entsprechende Definition haben?


Also
$ man asin
zeigt bei mir zumindest das die Funktion im System (Slackware 8.1) eigentlich vorhanden sein müßte, weil eine Manpage allein ohne Lib macht wohl kaum Sinn. :confused:

Catonga
27-05-2003, 07:09
Original geschrieben von Jasper
nein, du musst nur halt die math-lib hinzulinken, das ist keine default-lib:

gcc -lm ...

-j

Ok, das hat jetzt geklappt: :)

$ gcc -lm test.c -o test

Danke.

anda_skoa
27-05-2003, 09:56
Original geschrieben von Catonga
Ich dachte wenn ich die math.h Header Datei includiere wäre das
schon alles damit er die Funktion asin() benutzen kann.


Benutzen kannst du sie ja auch, der Compiler ist eh zufrieden, durch das include kennt er die Deklaration, weiß also, wie die Funktion heißt, welche Parameter sie braucht und welchen Rückgabetyp sie hat.

Nur der Linker weiß nicht, wo er die Definition der Funktion finden kann :)

Ciao,
_