这个问题不仅与gcc有关,而且与ld(1)也有关。
默认情况下,gcc不会消除无效代码,您可以通过编译/链接可执行文件然后运行来进行检查
objdump -d a.out
它显示了可执行文件中的所有功能。
简单的“搜索”就给出了此链接。
因此,要删除未使用的功能,您需要:
- 使用“ -fdata-sections”进行编译以将数据保留在单独的数据节中,使用“ -ffunction-sections”进行编译以将函数保留在单独的节中,因此如果未使用它们,则可以将其(数据和函数)丢弃。
- 链接“ –gc-sections”以删除未使用的部分。



