Undefined ссылка на pow() в C, несмотря на включение math.h
Возможный дубликат:
Проблема с использованием pow() в C
что такое undefined ссылка на` pow ''
У меня немного проблема с простой частью курсовой работы для uni, которая действительно озадачивает меня.
По сути, я должен написать программу, которая, среди прочего, вычисляет объем сферы из заданного радиуса. Я думал, что использовать функцию pow()
, а не просто использовать r*r*r
, для дополнительных точек Брауни, но компилятор продолжает давать мне следующую ошибку:
undefined ссылка на 'pow' collect2: error: 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 дома компилятор командной строки отказывается запускаться. Любые мысли будут с благодарностью оценены!
Благословения,
Ian
Ответы
Ответ 1
Вам нужно связать с математической библиотекой:
gcc -o sphere sphere.c -lm
Ошибка, которую вы видите: error: ld returned 1 exit status
- из компоновщика ld
(часть gcc, которая объединяет объектные файлы), потому что не может найти, где определена функция pow
.
Включение math.h
приводит к объявлению различных функций, а не их определению. Def присутствует в математической библиотеке libm.a
. Вам необходимо связать свою программу с этой библиотекой, чтобы разрешить вызовы функций, таких как pow().