linker: undefined reference to sqrt.

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

linker: undefined reference to sqrt.

Beitrag von naums » Do Nov 07, 2013 2:28 pm

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?
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: linker: undefined reference to sqrt.

Beitrag von cloidnerux » Do Nov 07, 2013 2:35 pm

Probiere es mal mit

Code: Alles auswählen

gcc sqrt.c -lm
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: linker: undefined reference to sqrt.

Beitrag von Xin » Do Nov 07, 2013 2:38 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: linker: undefined reference to sqrt.

Beitrag von naums » Do Nov 07, 2013 2:42 pm

mit
gcc sqrt.c -lm
hats dann tatsächlich funktioniert.

Vielen Dank.
.globl truth
truth:
mov r0, #42
mov pc, lr

Antworten