Разве log10f () не является частью стандартной математической библиотеки? - PullRequest
1 голос
/ 20 мая 2009

У меня проблемы с использованием log10f (). Я компилирую программу в Linux (2.6.28-11-generic) и использую gcc (3.4.6).

Следующий источник компилирует и печатает 1.000000 при выполнении.

#include <stdio.h>
#include <math.h>

int main() {
   printf("%f\n", log10f(10));
   return 0;
}

, в то время как нижеприведенное не показывает и выдает ошибку ссылки:

#include <stdio.h>
#include <math.h>

int main() {
   printf("%f\n", log10f(100));
   return 0;
}

Ошибка: неопределенная ссылка на log10f

  1. Разве log10f () не определен как часть стандартной математической библиотеки (справочные страницы указывают, что она является частью математической библиотеки)?

  2. Почему второй пример не компилируется?

1 Ответ

5 голосов
/ 20 мая 2009

Это потому, что необходимая библиотека libm.a не связана с исполняемым файлом автоматически.

Вы должны добавить параметр -lm в gcc. Тогда компоновщик также свяжет libm.a в ваш исполняемый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...