Seite 1 von 1

linker: undefined reference to sqrt.

Verfasst: Do Nov 07, 2013 2:28 pm
von naums
Hallo. Ich versuche folgende Datei zu kompilieren:

Code: Alles auswählen

#include <stdio.h>      /* printf */
#include <math.h>       /* sqrt */

int main ()
{
  double param, result;
  param = 1024.0;
  result = sqrt (param);
  printf ("sqrt(%f) = %f\n", param, result );
  return 0;
}
mit

Code: Alles auswählen

gcc sqrt.c
Der Linker spuckt mir folgenden Fehler aus:

Code: Alles auswählen

/tmp/cciqi2kL.o: In function `main':
sqrt.c:(.text+0x2d): undefined reference to `sqrt'
collect2: ld gab 1 als Ende-Status zurück
Kann mir jemand bei der Lösung des Problems behilflich sein?

Re: linker: undefined reference to sqrt.

Verfasst: Do Nov 07, 2013 2:35 pm
von cloidnerux
Probiere es mal mit

Code: Alles auswählen

gcc sqrt.c -lm

Re: linker: undefined reference to sqrt.

Verfasst: Do Nov 07, 2013 2:38 pm
von Xin
naums hat geschrieben: mit

Code: Alles auswählen

gcc sqrt.c
Der GCC linkt die mathematischen Funktionen nicht automatisch mit.
Der Aufruf ist

Code: Alles auswählen

gcc -lm sqrt.c
Dann läuft's. Bei G++ ist das nicht erforderlich.

PS: Mist... zu spät... ;-)
PS2: Wir könnten den Hinweis mal in die Standard-Lib einpflegen - das Problem ist eigentlich alltäglich genug, um es in "Bekannte Fehlerquellen" der mathematischen Funktionen reinzupacken.

Re: linker: undefined reference to sqrt.

Verfasst: Do Nov 07, 2013 2:42 pm
von naums
mit
gcc sqrt.c -lm
hats dann tatsächlich funktioniert.

Vielen Dank.