有选择地链接存档中的符号

时间:2015-09-29 15:49:13

标签: gcc linker

我有一个在libcrypto.a中链接的项目。但是,我感兴趣的是SHA功能。有没有办法指定应从结果二进制文件中删除所有其他未使用的函数?

GCC 4.8是工具链的一部分。

1 个答案:

答案 0 :(得分:2)

默认情况下,除非指定--whole_archive flag,否则GNU链接器应仅提取必要的目标文件。

如果要消除死代码,请使用以下链接器标志:

  

-Wl,-static

     

链接静态库。消除死码所必需的。

     

-fvtable-gc

     

C ++虚拟方法表,其中包含链接器的垃圾收集信息。

     

-fdata-sections

     

将数据保存在单独的数据部分中,以便在未使用时将其丢弃。

     

-ffunction-sections

     

将函数保存在单独的数据部分中,以便在未使用时将其丢弃。

     

-Wl,--gc-sections

     

告诉链接器垃圾收集并丢弃未使用的部分。

     

-s

     

剥离调试信息,以使代码尽可能小。 (我认为你想要用死代码做这件事   删除构建。)

来源:https://gcc.gnu.org/ml/gcc-help/2003-08/msg00128.html