链接器如何知道要链接的所有库?

时间:2012-02-12 11:50:47

标签: c++ gcc compiler-construction linker

来自http://www.learncpp.com/cpp-tutorial/19-header-files/

enter image description here

链接器如何知道它需要包含标准运行时库,例如iostream中声明的函数的定义在其他地方不存在?

是否有一些便于链接过程的映射?

重新措辞 - 如果我包含一些仅包含函数声明的文件,那么任何链接器如何确定函数定义的位置?

2 个答案:

答案 0 :(得分:6)

这只是链接器的默认设置之一。通常,如果您不想使用它们,可以告诉它 not 链接标准库。

并且总是必须明确告诉链接器链接应用程序使用的任何其他库。它不会“弄清楚”函数定义仅仅基于包含的声明。

答案 1 :(得分:5)

如果您使用g++,它将始终链接标准c ++库(-lstdc++)。

要绕过它,您可以使用gcc并链接其他库。

编辑:链接器没有找出任何。标准库是自动链接的,因此没有什么可以找出标准函数。如果您只是声明一些不在STL中的东西并尝试在没有实际定义的情况下使用它,则链接器将失败。您必须手动链接库/ .o。