在完全相同的位置静态链接整个库

逆向工程 静态分析
2021-07-06 08:16:19

我使用静态版本的 GNUgmp编写了一个小型驱动程序我观察到库本身是,1.2 MB而驱动程序可执行文件是237 KB. 这让我相信链接器ld足够聪明,只包含库中所需的代码,从而消除了不必要的指令,以防止可执行文件变得庞大。

有什么方法可以指示从某个指定位置开始ld链接整个gmp库(甚至是不必要的代码)?

1个回答

ld使用该--whole-archive选项调用会强制它加载所有库对象,而不仅仅是源文件中使用的库对象。如果您不想将此应用于所有库,请--no-whole-archive在您希望标准链接行为应用于的任何库之前使用该选项。

这些选项的使用在ld 的手册页中有详细说明