2012-10-10 322 views
40

Possible Duplicate:
Problem using pow() in C
what is 'undefined reference to `pow''未定義的引用在C POW(),儘管包括math.h中

我有一個有點問題用一段簡單的課程對UNI這真是百思不得其解。基本上,我必須編寫一個程序,除其他功能外,它還可以計算給定半徑範圍內的球體積。我想我會用pow()功能,而不是簡單地使用r*r*r,額外的加分,但是編譯器不斷給我下面的錯誤:

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

我的代碼如下所示:

#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

這個編譯並在uni上的Windows機器上的代碼塊中運行良好,但在我的Fedora 17上,命令行編譯器拒絕運行。任何想法將不勝感激!

祝福, 伊恩

回答

78

您需要用數學庫鏈接:

gcc -o sphere sphere.c -lm 

您所看到的錯誤:error: ld returned 1 exit status是從連接ld(GCC的一部分,它結合了目標文件)因爲它無法找到函數pow的定義。

包括math.h引入了各種功能的聲明,而不是他們的定義。 def存在於數學庫libm.a中。你需要將你的程序與這個庫聯繫起來,以便像pow()這樣的函數的調用得到解決。

相關問題