编写c语言程序时候,经常会引用math.h这个头文件,如果使用的是gcc编译器,需要在编译选项中加入-lm,因为math.h在libm.so这个静态库中。不然会出现“undefined refrence to ”
c语言的标准包括两部分,一部分是c语言的的语法描述,一部分是c语言标准库。c标准库中包含了的头文件中有函数,变量,结构的声明和一些宏定义。要在一个平台支持c语言,不仅要实现c编译器,还要实现c语言标准库。也有没有完全实现c语言标准库的例子,有些单片机的c语言开发工具就只实现了c编译器和部分c标准库。
Linux平台下使用的是最广泛的是glibc函数库,其中包含了c标准库的实现。几乎所有的c程序都要用到glibc的库函数,glibc中定义了一组头文件和库文件,其中最常用的是libc.so,它是所有c程序的基础。一些数学计算的函数在libm.so中。