在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()这样的函数被调用。