首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为何使用sqrt函数的时候,编译不需要 -lm

2014-05-26 
为什么使用sqrt函数的时候,编译不需要 -lm?看一个教程的时候说,在编译以下源程序的时候:testmath.c#includ

为什么使用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'的错误。

引用:
看一个教程的时候说,在编译以下源程序的时候:
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  也没有问题呀,到底是怎么回事?

热点排行