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

我在ubuntu14.04中写了两个文件sum.c和main.c,其中sum.c包含头文件math.h,而main.c包含头文件stdio.h,stdlib.h,time... 我在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需要链接,而其它几个库不需要?
展开
 我来答
AA5956
2015-07-30 · TA获得超过1869个赞
知道小有建树答主
回答量:705
采纳率:72%
帮助的人:470万
展开全部
查MSDN是Windows程序员必须掌握的技能之一。
会用man命令是Linux程序员必须掌握的技能之一。
首先你要区分你的头文件和链接库。

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

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

当然了,很多其他的编译平台是把数学库默认链接进来了的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式