虽然GCC需要-lm为math.h中,但没有为-l包括stdio.h中,文件stdlib.h等[重复]

问题描述 投票:1回答:1

这个问题已经在这里有一个答案:

我无法找到为什么gcc需要-lmmath.h功能,但需要-lstdio功能没有任何stdlib文档。为什么有些功能需要包括与-l gcc命令选项,和别人不要求-l选项?有什么想法吗?

c gcc linker
1个回答
1
投票

有一些这会直接默认链接库。

一个用于gcc这些默认库是libc.a(静态)或libc.so(动态)(GNU standard C library),它包含printf()scanf()家庭,包括其他人,在原型或stdio.hstdlib.h的定义。

现在,为了回答你的问题,根据wikipedia article

在FreeBSD和Linux,[8]的数学函数(如在math.h声明)被分别在数学库libm捆绑在一起。如果其中任何一个被使用,该连接器必须给出指令-lm

如果你想明确地检查有关库过得去deafult连接,你需要使用-v选项进行检查。您也可以通过-Wl,--verbose选项,以获得更详细的输出。

如果你想限制默认的链接,你可以利用-nostdlib开关。

© www.soinside.com 2019 - 2024. All rights reserved.