[英]How does a linker know what all libraries to link?
来自http://www.learncpp.com/cpp-tutorial/19-header-files/
链接器如何知道它需要包含标准运行时库,例如iostream中声明的函数的定义在其他地方不存在?
是否有一些映射可以促进链接过程?
重新措辞 - 如果我包含一些只包含函数声明的文件,那么任何链接器如何确定函数定义的位置?
这只是链接器的默认设置之一。 通常,如果您不想使用它们,可以告诉它不要链接标准库。
而且你总是必须明确告诉链接器链接你的应用程序使用的任何其他库。 它不会“弄清楚”函数定义仅基于包含的声明。
如果使用g++
,它将始终链接标准c ++库( -lstdc++
)。
要绕过它,您可以使用gcc
并链接其他库。
编辑:链接器没有弄清楚任何东西 。 标准库是自动链接的,因此没有什么可以找出标准函数。 如果您只是声明一些不在STL中的东西并尝试在没有实际定义的情况下使用它,则链接器将失败。 您必须手动链接库/ .o。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.