为什么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需要链接,而其它几个库不需要? 展开
然后编译: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需要链接,而其它几个库不需要? 展开
1个回答
展开全部
查MSDN是Windows程序员必须掌握的技能之一。
会用man命令是Linux程序员必须掌握的技能之一。
首先你要区分你的头文件和链接库。
1、头文件,头文件是定义,所以无论你用哪些函数,库函数也好你自己写的也罢,你都需要include 进来。这个printf和数学函数是一样的。
2、链接库,链接库有很多,最常用的就是C库了,如printf函数就是在C库里实现的,而且C库中还放置了很多常用的函数实现,这个C库是编译时默认就会去链接的。对于数学库,毕竟没有printf类函数常用,所以很多类UNIX系统里都没把他作为默认的链接库来实现。
当然了,很多其他的编译平台是把数学库默认链接进来了的
会用man命令是Linux程序员必须掌握的技能之一。
首先你要区分你的头文件和链接库。
1、头文件,头文件是定义,所以无论你用哪些函数,库函数也好你自己写的也罢,你都需要include 进来。这个printf和数学函数是一样的。
2、链接库,链接库有很多,最常用的就是C库了,如printf函数就是在C库里实现的,而且C库中还放置了很多常用的函数实现,这个C库是编译时默认就会去链接的。对于数学库,毕竟没有printf类函数常用,所以很多类UNIX系统里都没把他作为默认的链接库来实现。
当然了,很多其他的编译平台是把数学库默认链接进来了的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询