为什么使用sqrt函数的时候,编译不需要 -lm?
看一个教程的时候说,在编译以下源程序的时候:
testmath.c
#include <stdio.h>
#include <math.h>
int main()
{
int x=100;
double y=sqrt(x);
printf("y=%lf\n",y);
return 0;
}
编译的时候需要这样: gcc testmath.c -lm ;否则会出错.(因为sqrt函数在libm.a这个静态库里面,而不在标准C语言库里面)
但是我这样编译:gcc testmath.c 也没有问题呀,到底是怎么回事?
[解决办法]
我们都是需要加-lm的,否则会出现undefined reference to `sqrt'的错误。