我找不到关于gcc
为什么需要-lm
用于math.h
函数的任何文档,但是-l
或stdio
不需要stdlib
功能。为什么有些函数需要include和-l
gcc
命令选项,而另一些函数却不需要-l
选项?有什么想法吗?
答案 0 :(得分:1)
有些库默认情况下会链接 。
true == false
的默认库之一是gcc
(静态)或libc.a
(动态)(GNU standard C library),其中包含{{1} }和libc.so
系列(包括其他系列),其原型是printf()
或scanf()
中。
现在,根据wikipedia article
回答您的问题在FreeBSD和Linux下, [8] 将数学函数(在
stdio.h
中声明)捆绑在数学库stdlib.h
中。如果使用它们中的任何一个,则必须为链接器指定指令math.h
。
如果要显式检查通过默认链接链接的库,则需要使用libm
选项进行检查。您还可以通过-lm
选项来获得更详细的输出。
如果您想限制默认链接,可以使用-v
开关。