Подтвердить что ты не робот

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

4b9b3361

Ответ 1

Вам нужно связать с математической библиотекой:

gcc -o sphere sphere.c -lm

Ошибка, которую вы видите: error: ld returned 1 exit status - из компоновщика ld (часть gcc, которая объединяет объектные файлы), потому что не может найти, где определена функция pow.

Включение math.h приводит к объявлению различных функций, а не их определению. Def присутствует в математической библиотеке libm.a. Вам необходимо связать свою программу с этой библиотекой, чтобы разрешить вызовы функций, таких как pow().