2013-08-03 6 views
3

Мне нужно использовать журналы в программе для назначения. Я запустил эту тестовую программу на своей машине, чтобы увидеть, как работает функция журнала (и если она будет), и я получаю следующую ошибку во время сборки.Почему я получаю эту ошибку при попытке использовать журнал из math.h в C?

Код

/* log example */ 
#include <stdio.h>  /* printf */ 
#include <math.h>  /* log */ 

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

ОШИБКА

gcc -Wall -o "test" "test.c" (in directory: /home/linux/Development/codetest) 
/tmp/ccCDqX7x.o: In function `main': 
test.c:(.text+0x1b): undefined reference to `log' 
collect2: ld returned 1 exit status 
Compilation failed. 

Ссылка

Это C99 код, схватил из этого tutorial сайта.

ответ

4

Добавить -lm в вашу команду компиляции для ссылки в математической библиотеке.

gcc -Wall -o "test" "test.c" -lm 
+0

Я всегда считал это немного странным, что gcc не просто втягивает в math lib по умолчанию. –

+0

Древняя традиция, частично относящаяся к тому, что не все процессоры имеют встроенную арифметику с плавающей запятой, поэтому вам может понадобиться эмуляция программного обеспечения и т. Д. FWIW: в Mac OS X (10.8.4, но и более ранних версиях) вам не нужно '-lm', чтобы связать код примера. –