微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 C++ 中找出最终可执行文件的大小来自哪里?

如何解决如何在 C++ 中找出最终可执行文件的大小来自哪里?

假设我有一个 C++ 程序,它在编译时会生成一个大小为数兆字节的可执行二进制文件。我如何找出这个尺寸的来源?有没有工具可以显示 X% 的大小来自文件或 Y 类等?

理想情况下,我正在寻找一种类似于 Disk Usage Analyzer 的工具,可以将构成可执行文件内容分解为某种饼图或其他图形。如果没有,至少有可用的信息可以创建图表。

最终目标是确定我可以从可执行文件中排除的程序部分,以缩小它并优化大小,从最大的不必要代码开始。

解决方法

您可以看看 Bloaty McBloatface,它声称专为做到这一点而设计:

有没有想过是什么让你的二进制文件变大了? Bloaty McBloatface 将向您显示二进制文件的大小配置文件,以便您了解内部占用的空间。

Bloaty 对二进制文件进行了深入分析。 Bloaty 使用自定义 ELF、DWARF 和 Mach-O 解析器,旨在准确地将二进制文件的每个字节归因于生成它的符号或编译单元。它甚至会反汇编二进制文件以查找对匿名数据的引用。有关 Bloaty 执行的分析的更多信息,请参阅 doc/how-bloaty-works.md。

Bloaty 适用于二进制文件、共享对象、目标文件和静态库(.a 文件)。支持以下文件格式:

精灵
马赫-O
WebAssembly(实验性)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。