2012-10-10 19 views
40

Possible Duplicate:
Problem using pow() in C
what is 'undefined reference to `pow''undefined reference to pow() in C, nonostante tra cui math.h

Sto avendo un po 'di un problema con un semplice pezzo di corsi per uni che è veramente mi sconcertante.

In sostanza, devo scrivere un programma che, tra le altre cose, calcola il volume di una sfera da un dato raggio. Ho pensato di usare la funzione pow() piuttosto che semplicemente usando r*r*r, per i punti Brownie in più, ma il compilatore continua a darmi il seguente errore:

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

Il mio codice è simile al seguente:

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

e sto compilando il comando gcc -o sphere sphere.c

Questo compila e gira bene nei blocchi code :: sui computer Windows su uni, ma sul mio Fedora 17 a casa il compilatore della riga di comando si rifiuta di eseguire. Qualsiasi pensiero sarebbe apprezzato con gratitudine!

Benedizioni, Ian

risposta

78

è necessario collegare con la libreria matematica:

gcc -o sphere sphere.c -lm 

L'errore che state vedendo: error: ld returned 1 exit status da linker ld (parte di gcc che unisce i file oggetto) perché non è in grado di trovare dove è definita la funzione pow.

Includere math.h introduce la dichiarazione delle varie funzioni e non la loro definizione. La def è presente nella libreria matematica libm.a. Devi collegare il tuo programma con questa libreria in modo che le chiamate a funzioni come pow() siano risolte.

Problemi correlati