一、math.h
- 正真的数学运算的函数定义在mathcalls.h中,在使用数学库函数时只要包含math.h即可。
二、计算开平方
- 开平方函数原型:double sqrt(double x);
#include <stdio.h>
#include<math.h>
int main(void)
{
double a=16.0;
double b=sqrt(a);
printf("b=%lf.\n",b);
return 0;
}
- 注意区分编译时警告和链接时警告。
- 链接错误意思是:sqrt函数有声明有引用但是没有定义没有函数体。
- sqrt本身是库函数,在编译器中有其静态和动态的链接库。
- c链接器的工作特点:因为库函数有很多,连接器去库函数目录搜索时间比较久,为了提升速度,链接器只是默认寻找几个最常用的库,如果是一些不常用的库函数被调用,需要程序员在链接时明确给出扩展库的名字。
- 链接时可以用-lxxx来指示链接器去xxx中寻找这个函数
三、链接时加-lm
- -lm就是告诉链接器到libm中去查找用到的函数。
- ldd看可执行程序用到了那些库。
- 在高版本的gcc中出现没有加-lm也能编译链接。