Почему я получаю эту ошибку при попытке использовать журнал из 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, взятый с этого учебного курса сайта.


person Community    schedule 03.08.2013    source источник


Ответы (1)


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

gcc -Wall -o "test" "test.c" -lm
person jxh    schedule 03.08.2013
comment
Мне всегда казалось немного странным, что gcc по умолчанию не просто использует математическую библиотеку. - person Cory Nelson; 03.08.2013
comment
Древняя традиция, частично восходящая к тому времени, когда не все процессоры имели встроенную арифметику с плавающей запятой, поэтому вам может потребоваться программная эмуляция и т. Д. FWIW: в Mac OS X (10.8.4, но также и более ранние версии) вам не нужен -lm, чтобы связать пример кода. - person Jonathan Leffler; 03.08.2013