来自http://www.learncpp.com/cpp-tutorial/19-header-files/
链接器如何知道它需要包含标准运行时库,例如iostream中声明的函数的定义在其他地方不存在?
是否有一些便于链接过程的映射?
重新措辞 - 如果我包含一些仅包含函数声明的文件,那么任何链接器如何确定函数定义的位置?
答案 0 :(得分:6)
这只是链接器的默认设置之一。通常,如果您不想使用它们,可以告诉它 not 链接标准库。
并且总是必须明确告诉链接器链接应用程序使用的任何其他库。它不会“弄清楚”函数定义仅仅基于包含的声明。
答案 1 :(得分:5)
如果您使用g++
,它将始终链接标准c ++库(-lstdc++
)。
要绕过它,您可以使用gcc
并链接其他库。
编辑:链接器没有找出任何。标准库是自动链接的,因此没有什么可以找出标准函数。如果您只是声明一些不在STL中的东西并尝试在没有实际定义的情况下使用它,则链接器将失败。您必须手动链接库/ .o。