2012-10-10 20 views
40

Possible Duplicate:
Problem using pow() in C
what is 'undefined reference to `pow''referencia indefinida a pow() en C, a pesar de incluir math.h

estoy teniendo un poco de un problema con un simple trozo de cursos para la uni que realmente me desconcertante.

Esencialmente, tengo que escribir un programa que, entre otras cosas, calcula el volumen de una esfera de un radio determinado. Pensé que haría uso de la función pow() en lugar de simplemente utilizando r*r*r, para puntos adicionales del brownie, pero el compilador me mantiene dando el siguiente error:

undefined reference to 'pow' collect2: error: ld returned 1 exit status

Mi código es el 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 de Windows en la uni, pero en mi Fedora 17 en mi casa el compilador de línea de comandos se niega a ejecutar. ¡Cualquier pensamiento sería agradecido!

Bendiciones, Ian

Respuesta

78

es necesario enlazar con la biblioteca matemática:

gcc -o sphere sphere.c -lm 

El error que está viendo: error: ld returned 1 exit status es desde el enlazador ld (parte de gcc que combina los archivos de objetos) porque no puede encontrar donde se define la función pow.

Incluyendo math.h trae en 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().

Cuestiones relacionadas