在链接/编译时静态包含所有库而不是库的一部分

hES*_*haN 1 c gcc static-libraries

如果我要将某个库静态链接到我的应用程序,据我所知,链接器可以以某种方式进行优化,以便在生成最终可执行文件时仅放置库中使用过的部分。如果我想生成一个包含库的所有部分而不是我实际使用的部分的可执行文件,有没有办法在编译时关闭它,可能使用编译器标志或任何其他特定方法?

Max*_*kin 6

有一个 GNU 链接器选项--whole-archive可以做到这一点:

对于--whole-archive选项后命令行中提到的每个存档 ,将存档中的每个目标文件都包含在链接中,而不是在存档中搜索所需的目标文件。这通常用于将存档文件转换为共享库,强制将每个对象都包含在生成的共享库中。

有关man ld更多详细信息,请参阅。

当您使用此选项链接gccclang将此选项作为-Wl,--whole-archive.