虽然gcc对于math.h需要-lm,但对于-st不需要stl.h,stdlib.h等

时间:2019-02-04 13:38:22

标签: c gcc linker

我找不到关于gcc为什么需要-lm用于math.h函数的任何文档,但是-lstdio不需要stdlib功能。为什么有些函数需要include和-l gcc命令选项,而另一些函数却不需要-l选项?有什么想法吗?

1 个答案:

答案 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开关。