问题:
今天在linux环境下串行计算Pi值的时候,出现了这样的问题:
dblab@dblab-virtual-machine:~/MpiCode/test2$ gcc SerialCount.c -o serialcount.o/tmp/cctJ4RwL.o:在函数‘main’中:
SerialCount.c:(.text+0x81):对‘pow’未定义的引用
SerialCount.c:(.text+0xab):对‘pow’未定义的引用
collect2: error: ld returned 1 exit status
源代码:
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#define n 1000000000
void main()
{
int i,count=0;
double x,y,pi;
srand((int)time(NULL));
for(i=0;i<n;i++)
{
x=(double)(1.0*rand()/RAND_MAX);
y=(double)(1.0*rand()/RAND_MAX);
if(pow(x,2)+pow(y,2)<=1)
{
count+=1;
}
}
pi=4.0*count/n;
printf("%f",pi);
}
解决方法:
在linux环境下编译时,需要链接数学库,参考解决方式:
在编译语句后面加一个 -lm
gcc SerialCount.c -o serialcount.o -lm
编译成功