在C中未定义的引用pow(),尽pipe包括math.h

可能重复:
在C中使用pow()的问题
什么是'未定义的参考'pow''

对于uni的一门简单的课程,我有点问题,这让我很困惑。

从本质上讲,我必须编写一个程序,除其他function外,还可以计算给定半径的球体积。 我以为我会使用pow()函数,而不是简单地使用r*r*r来获得额外的布朗尼分数,但编译器不断给我提供以下错误:

未定义的引用'pow'collect2:错误: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编译

这在uni上的Windows机器上的code :: blocks中编译和运行良好,但是在我的Fedora 17中,命令行编译器拒绝运行。 任何想法将不胜感激!

祝福,伊恩

你需要链接到math库:

 gcc -o sphere sphere.c -lm 

你看到的错误: error: ld returned 1 exit status来自链接器ld (组合目标文件的gcc的一部分),因为它无法find函数pow定义的位置。

包括math.h了各种function的声明,而不是它们的定义。 def存在于math库libm.a 。 你需要将你的程序和这个库联系起来,以便像pow()这样的函数被调用。