我正在研究一个大型 c++ 构建的库,该库最近增长了很多。由于它的大小,导致这种大小增加的原因尚不清楚。
您对工具(msvc 或 gcc)有什么建议可以帮助确定增长的来源。
编辑 我尝试过的事情:Dumpbin 最终的 dll、obj 文件、创建地图文件并翻录它。
再次编辑 所以 objdump 和 python 脚本似乎已经完成了我想要的。
如果是 gcc,则为 objdump。如果是视觉工作室,dumpbin。
我建议对旧(小)库与新(大)库的工具输出进行比较。
在 Linux 上,应该很容易查看是否添加了带有递归差异的新文件。他们肯定会增加图书馆的规模。然后,您可以在 Linux 上使用size命令行工具来获取每个新目标文件的大小并将它们汇总。然后将该总和与您的图书馆增加进行比较,并检查它有多少不同。
天,
如果您有任何先前版本的目标文件,您可以运行 size 命令查看哪个段增长了吗?
几个问题:
编辑:如果代码在 SCM 下,您能否查看为您提供较小对象的源版本。然后比较:
find ./tree_top ( -name *.h -o -name *.cpp ) | wc -l
find ./tree_top ( -name *.h -o -name *.cpp ) -print | sort > treelist
通过执行 a然后对新的更大的树执行相同的操作来确定增加的文件数量。做一个简单的 sdiff 将显示任何大量的新文件。高温高压
顺便说一句,请在此处发布您的发现,因为我相信很多人对您的发现感兴趣。
干杯,