为什么c语言标准函数库time.h不需要链接,而math.h就需要链接?

我在ubuntu 14.04中写了两个文件sum.c 和main.c,其中sum.c包含头文件math.h, 而main.c 包含头文件stdio.h, stdlib.h, time.h。
然后编译:gcc -c sum.c main.c
然后 gcc -o main sum.o main.o,显示错误:sum.c:(.text+0x5c):对‘sqrt’未定义的引用。
然后再 gcc -o main sum.o main.o -lm 就好了。
同样是c标准库,为什么math.h需要链接,而其它几个库不需要?

查MSDN是Windows程序员必须掌握的技能之一。
会用man命令是Linux程序员必须掌握的技能之一。
首先你要区分你的头文件和链接库。

1、头文件,头文件是定义,所以无论你用哪些函数,库函数也好你自己写的也罢,你都需要include 进来。这个printf和数学函数是一样的。

2、链接库,链接库有很多,最常用的就是C库了,如printf函数就是在C库里实现的,而且C库中还放置了很多常用的函数实现,这个C库是编译时默认就会去链接的。对于数学库,毕竟没有printf类函数常用,所以很多类UNIX系统里都没把他作为默认的链接库来实现。

当然了,很多其他的编译平台是把数学库默认链接进来了的
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答