我有一个在libcrypto.a中链接的项目。但是,我感兴趣的是SHA功能。有没有办法指定应从结果二进制文件中删除所有其他未使用的函数?
GCC 4.8是工具链的一部分。
答案 0 :(得分:2)
默认情况下,除非指定--whole_archive
flag,否则GNU链接器应仅提取必要的目标文件。
如果要消除死代码,请使用以下链接器标志:
-Wl,-static
链接静态库。消除死码所必需的。
-fvtable-gc
C ++虚拟方法表,其中包含链接器的垃圾收集信息。
-fdata-sections
将数据保存在单独的数据部分中,以便在未使用时将其丢弃。
-ffunction-sections
将函数保存在单独的数据部分中,以便在未使用时将其丢弃。
-Wl,--gc-sections
告诉链接器垃圾收集并丢弃未使用的部分。
-s
剥离调试信息,以使代码尽可能小。 (我认为你想要用死代码做这件事 删除构建。)