[OT] Biblioteka math w gcc

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.

Reply to
T.M.F.
Loading thread data ...

Grzegorz Brzęczyszczykiewicz pisze:

^^^^^^^

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

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

Reply to
Zbych

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.c:(.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.

Reply to
Grzegorz Brzęczyszczykiewicz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.