c

Referencia no definida a pow() en C, a pesar de incluir math.h



(1)

Debes enlazar con la biblioteca de matemáticas:

gcc -o sphere sphere.c -lm

El error que está viendo: error: ld returned 1 exit status proviene del enlazador ld (parte de gcc que combina los archivos objeto) porque no puede encontrar dónde se define la función pow .

Incluir math.h trae la declaración de las diversas funciones y no su definición. La definición está presente en la biblioteca matemática libm.a Debe vincular su programa con esta biblioteca para que se resuelvan las llamadas a funciones como pow ().

Posible duplicado:
Problema al usar pow () en C
¿Qué es ''referencia indefinida para'' pow ''''

Estoy teniendo un pequeño problema con un simple trabajo de curso para la universidad que realmente me desconcierta.

Esencialmente, tengo que escribir un programa que, entre otras cosas, calcula el volumen de una esfera desde un radio dado. Pensé que usaría la función pow() lugar de simplemente usar r*r*r , para obtener puntos Brownie adicionales, pero el compilador me sigue dando el siguiente error:

referencia indefinida a ''pow'' collect2: error: ld devuelto 1 estado de salida

Mi código se parece a lo siguiente:

#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); }

y estoy compilando con el comando gcc -o sphere sphere.c

Esto compila y funciona bien en code :: blocks en las máquinas Windows en la universidad, pero en mi Fedora 17 en casa, el compilador de la línea de comandos se niega a ejecutar. ¡Cualquier pensamiento sería agradecido!

Bendiciones, Ian