比如说,一个名为 player 的库,有两个名为 footballer() 和 cricketer() 的函数,而在程序中我们只使用了 footballer()。
链接器会将这两个函数链接到 exe 还是仅链接使用的函数,即 football()...
一般未定义。首先让我们假设我们谈论静态库。
几乎所有主要平台(如 Linux、Mac OS X 和 Windows)上的链接器都可以丢弃未使用的代码,但对于几乎所有人来说,这是一种选择。所以这个选项可以打开或关闭。
另外,现代编译器具有链接时间优化通道,在此期间,未使用的代码将被删除,因为不是直接影响。
这在很大程度上取决于实现和链接器选项。一些链接器将仅链接所用函数的代码,而其他链接器将链接两者。
在一些实现中,库由许多目标文件组成,并且链接器在目标文件级别上操作,而不是在函数级别上操作。