GCC 链接器:如何在输出部分生成每个文件贡献的报告

GCC Linker : how to generate a report of per file contribution on output sections

最近我在尝试 link 我的程序时遇到了一个问题。它报告 .text 无法放入指定的内存区域。显然,源代码变得太大,无法在有限的内存区域中 linked。

我现在要做的是分析哪个文件对“.text”部分的贡献最大,以便进行后续的代码优化。试了很多方法都没成功

当 gcc link 执行它的工作时,它应该知道从目标文件中提取并放入输出部分的内容的所有详细信息,但它似乎没有提供生成详细信息的开关报告(或者我遗漏了什么?)

有什么工具可以完成这项工作吗?

也许 --gc-sections--print-gc-sections and/or --print-map-discarded?

如果所有内容都在单独的部分中,那么您将所有部分作为输入,并列出丢弃的部分。然后简单的脚本将生成使用的部分列表、它们的大小和文件映射。