我对一个简单的单一课程有一点问题,这让我很困惑.
基本上,我要编写一个程序,除其他外,它计算给定半径的球体积.我以为我会使用该pow()
函数而不是简单地使用r*r*r
,对于额外的布朗尼点,但编译器一直给我以下错误:
未定义引用'pow'colle2:错误: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);
}
Run Code Online (Sandbox Code Playgroud)
我正在用命令编译 gcc -o sphere sphere.c
这在uni的Windows机器上的code :: blocks中编译并运行良好,但在家里的Fedora 17上,命令行编译器拒绝运行.任何想法将不胜感激!
祝福,伊恩
cod*_*ict 144
您需要链接数学库:
gcc -o sphere sphere.c -lm
Run Code Online (Sandbox Code Playgroud)
您看到的错误:error: ld returned 1 exit status
来自链接器ld
(组合目标文件的gcc的一部分),因为它无法找到pow
定义函数的位置.
包括math.h
引入各种功能的声明而不是它们的定义.def存在于数学库中libm.a
.您需要将程序与此库链接,以便解析对pow()等函数的调用.