Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Fehler im Quellcode???

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Gast

Fehler im Quellcode???

Beitrag von Gast »

Hi Leute!!!

kann mir jemand sagen warum mein Compiler diesen Fehler rausscheisst???

cc test.c
/tmp/cc2JH2rE.o(.text+0x16): In function `wurzel':
: undefined reference to `sqrt'

hier der Quell-Code:
------------------------------------------
#include <stdio.h>
#include <math.h>

double wurzel(int i)
{
return sqrt(i);
}

main ()
{
wurzel(9);

}
------------------------------------------

Das Prog soll Wurzel aus einer Zahl berechnen. Normalerweise ist ja sqrt() in math.h drin. Was will der Compiler noch von mir???
hardy
Newbie
Newbie
Beiträge: 9
Registriert: 20. Jan 2004, 21:52
Wohnort: Rhein-Pfalz Kreis

Re: Fehler im Quellcode???

Beitrag von hardy »

Anonymous hat geschrieben:Hi Leute!!!

kann mir jemand sagen warum mein Compiler diesen Fehler rausscheisst???

cc test.c
/tmp/cc2JH2rE.o(.text+0x16): In function `wurzel':
: undefined reference to `sqrt'

hier der Quell-Code:
------------------------------------------
#include <stdio.h>
#include <math.h>

double wurzel(int i)
{
return sqrt(i);
}

main ()
{
wurzel(9);

}
------------------------------------------

Das Prog soll Wurzel aus einer Zahl berechnen. Normalerweise ist ja sqrt() in math.h drin. Was will der Compiler noch von mir???

Hi,

wozu brauchst Du denn die Funktion Wurzel überhaupt ?
Ruf doch im Hauptprogramm direkt die Funktion sqrt auf..

Dein Problem hier ist, daß die sqrt falsch aufrufst, sqrt will als Argument ein double, Du übergibst aber einen Integer.

Die einfachste Variante für Dich wäre wohl ein cast auf double, also sowas

double wurzel(int i)
{
return sqrt( (double) i );
}

dann geht es...

oder direkt im Hauptprogramm mit

double ergebnis;
ergebnis = sqrt ( 9.0 );

ach ja, ausgeben solltest du das Ergebnis vielleicht auch noch...
printf(" Wurzel aus 9.0 ist %5.3f", ergebnis);

Gruß Hardy
Wowan
Newbie
Newbie
Beiträge: 1
Registriert: 23. Mär 2004, 19:45

Beitrag von Wowan »

Hi!!!

Es scheint als würdest du mit gcc arbeiten. Du musst die Bibliothek libm beim compilieren mit übergeben.

z.B cc dateiname.c -lm -o zieldatei oder so ähnlich.

Müsste so klappen. Wenn nicht, probier mal rum. Auf jeden Fall ist es die libm, die du mit übergeben musst.

Viel Erfolg
hardy
Newbie
Newbie
Beiträge: 9
Registriert: 20. Jan 2004, 21:52
Wohnort: Rhein-Pfalz Kreis

Beitrag von hardy »

Hi,
hier mal ein komplettes Beispiel:

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

double wurzel(int i)
{
return sqrt( (double) i);
}

int main ()
{
double ergebnis;
ergebnis = wurzel(9);
printf("Wurzel 9 ist: %5.2f \n", ergebnis);
return 0;
}

Das Ganze z.b. in die Datei demo.c schreiben.

Übersetzen unter Linux mit
gcc -o demo -lm demo.c

dann mit ./demo ausführen
Ausgabe hier ist dann:

Wurzel 9 ist: 3.00

Gruß Hardy
Antworten