RTV forum PL | NewsGroups PL

Błąd kompilacji w GCC 4.3.2: niezdefiniowane odwołanie do funkcji sin z math.h

[OT] Biblioteka math w gcc

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Błąd kompilacji w GCC 4.3.2: niezdefiniowane odwołanie do funkcji sin z math.h

Grzegorz Brzęczyszczykiew
Guest

Mon Dec 29, 2008 11:45 pm   



Witam.
Nakreślę problem:
Postanowiłem pobawić się trochę mikrokontrolerami pisząc w C . Ponieważ
dawno (całe lata świetlne) nie używałęm tego języka więc zanim zacznę
pisać konkretny programik na procka- postanowiłem najpierw zasymulować
to pisząc programik uruchamialny na PC. Używam Linux'a i GCC 4.3.2.
A teraz konkrety.
jest sobie taki kawałek programu (na potrzeby ilustracji):
=============================================
#include <stdio.h>
#include<math.h>


int main(void)
{
float i;

i=2;
printf ("%f\n",sin(i));
}
============================================
============================================

Komenda do kompilacji (plik nazwałem x.c):

$ cc -xc -o x x.c

============================================
============================================
Jako wynik kompilacji dostaję:

/home/user/tmp/cc6A7HHb.o: In function `main':
x.cSad.text+0x20): undefined reference to `sin'
collect2: ld returned 1 exit status


Jeżeli wpiszę ostanią linie np tak:

printf ("%f\n",sin(2));

-program kompiluje się bez problemu i działa porawnie.
Z innymi funkcjami z biblioteki math.h jest podobnie jeżeli wywołuję
funkcję w której jako parametr występuje zmienna.

O co biega, bo google wypluwa kupę stron, ale nic konkretnego.

Pozdrawiam
G.B.

T.M.F.
Guest

Mon Dec 29, 2008 11:45 pm   



Quote:
O co biega, bo google wypluwa kupę stron, ale nic konkretnego.

Dolacz oprocz naglowka biblioteke dla linkera. Przypuszczam, ze jesli
uzywasz zamiast zmiennej stalej to wartosc wyliczana jest na etapie
kompilacji i linker juz nie potrzebuje ciala funkcji sin.

Zbych
Guest

Mon Dec 29, 2008 11:45 pm   



Grzegorz Brzęczyszczykiewicz pisze:


Quote:
Komenda do kompilacji (plik nazwałem x.c):

$ cc -xc -o x x.c -lm
^^^^^^^


zapomniałeś o dołączeniu biblioteki matematycznej (-lm)


Quote:
Jako wynik kompilacji dostaję:

/home/user/tmp/cc6A7HHb.o: In function `main':
x.cSad.text+0x20): undefined reference to `sin'
collect2: ld returned 1 exit status


Jeżeli wpiszę ostanią linie np tak:

printf ("%f\n",sin(2));

-program kompiluje się bez problemu i działa porawnie.

bo sin(2) jest obliczany na etapie kompilacji programu i funkcja sinus
nie jest w ogóle wywoływana.

elektroda NewsGroups Forum Index - Elektronika Polska - Błąd kompilacji w GCC 4.3.2: niezdefiniowane odwołanie do funkcji sin z math.h

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map