Неопределенная ссылка на pow () в C, несмотря на включение математики.ч [дубликат]
Возможные Дубликаты:
проблема с использованием pow () в C
что такое неопределенная ссылка на `тяп"
у меня есть небольшая проблема с простой частью курсовой работы для uni, которая действительно озадачивает меня.
по сути, я должен написать программу, которая, среди прочего, вычисляет объем сферы от заданного радиуса. Я думал, что буду использовать pow()
функции, а не просто используя r*r*r
, для дополнительных очков, но компилятор дает мне следующую ошибку:
неопределенная ссылка на 'pow' collect2: ошибка: ld возвратил 1 состояние выхода
мой код выглядит следующим образом:
#include <math.h>
#define PI 3.14159265 //defines the value of PI
/* Declare the functions */
double volumeFromRadius(double radius);
/* Calculate the volume of a sphere from a given radius */
double volumeFromRadius(double radius) {
return (4.0/3.0) * PI * pow(radius,3.0f);
}
и я компилирую с командой gcc -o sphere sphere.c
это компилируется и отлично работает в code:: blocks на машинах Windows в uni, но на моем Fedora 17 дома компилятор командной строки отказывается работать. Любые мысли будут с благодарностью оценены!
благословения, Ян
1 ответ:
вам нужно связаться с математической библиотеки:
gcc -o sphere sphere.c -lm
ошибка, которую вы видите:
error: ld returned 1 exit status
от линкерld
(часть gcc, которая объединяет объектные файлы), потому что он не может найти, где функцияpow
определяется.в том числе
math.h
вводит объявление различных функций, а не их определение. Деф присутствует в математической библиотекеlibm.a
. Вам нужно связать свою программу с этой библиотекой, чтобы вызовы функций как pow () разрешаются.