您的位置:首页 > Web前端

gcc 引用math.h头文件,编译出现undefined reference to `pow‘等错

2014-04-28 12:07 381 查看
使用
math.h
中声明的库函数还有一点特殊之处,
gcc
命令行必须加
-lm
选项,因为数学函数位于
libm.so
库文件中(这些库文件通常位于
/lib
目录下),
-lm
选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。本书用到的大部分库函数(例如
printf
)位于
libc.so
库文件中,使用
libc.so
中的库函数在编译时不需要加
-lc
选项,当然加了也不算错,因为这个选项是
gcc
的默认选项。

C标准主要由两部分组成,一部分描述C的语法,另一部分描述C标准库。C标准库定义了一组标准头文件,每个头文件中包含一些相关的函数、变量、类型 声明和宏定义。要在一个平台上支持C语言,不仅要实现C编译器,还要实现C标准库,这样的实现才算符合C标准。不符合C标准的实现也是存在的,例如很多单 片机的C语言开发工具中只有C编译器而没有完整的C标准库。
在Linux平台上最广泛使用的C函数库是
glibc
,其中包括C标准库的实现。几乎所有C程序都要调用
glibc
的库函数,所以
glibc
是Linux平台C程序运行的基础。
glibc
提供一组头文件和一组库文件,最基本、最常用的C标准库函数和系统函数在
libc.so
库文件中,几乎所有C程序的运行都依赖于
libc.so
,有些做数学计算的C程序依赖于
libm.so
,以后我们还会看到多线程的C程序依赖于
libpthread.so
。以后我说
libc
时专指
libc.so
这个库文件,而说
glibc
时指的是
glibc
提供的所有库文件。
glibc
并不是Linux平台唯一的基础C函数库,也有人在开发别的C函数库,比如适用于嵌入式系统的
uClibc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐