可能重复:
Problem using pow() in C
what is 'undefined reference to `pow''
我在为一个简单的大学课程做了一些问题,这让我很困惑。
基本上,我要编写一个程序,除其他外,计算一个给定半径的球体积。我以为我会使用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上,命令行编译器拒绝运行。任何想法都将不胜感激!
祝福, 伊恩
答案 0 :(得分:127)
您需要链接数学库:
gcc -o sphere sphere.c -lm
您看到的错误:error: ld returned 1 exit status
来自链接器ld
(组合目标文件的gcc的一部分),因为它无法找到函数pow
的定义位置。
包括math.h
引入了各种功能的声明,而不是它们的定义。 def出现在数学库libm.a
中。您需要将程序与此库链接,以便解析对pow()等函数的调用。