Linux:估计程序代码和静态数据大小的最佳方法是什么?

时间:2020-03-05 18:45:17  来源:igfitidea点击:

我希望能够估算出我的C ++程序使用了多少代码和静态数据?

有没有一种方法可以通过查看可执行文件或者目标文件来找出来?也许我可以在运行时做些什么?

objdump和readelf有帮助吗?

解决方案

回答

readelf确实会有所帮助。我们可以使用-S选项;将显示所有部分的大小。 .text是(大部分)可执行代码。 .data和.rodata是静态数据。还有其他部分,其中一些部分在运行时使用,其他部分仅在链接时使用。

回答

"大小"是传统工具。 " readelf"有很多选择。

$ size /bin/sh
   text    data     bss     dec     hex filename
 712739   37524   21832  772095   bc7ff /bin/sh

回答

如果要进行下一步以确定功能和数据结构以专注于减少占用空间,nm的--size-sort参数可以显示:

$ nm --size-sort /usr/bin/fld | tail -10
000000ae T FontLoadFontx
000000b0 T CodingByRegistry
000000b1 t ShmFont
000000ec t FontLoadw
000000ef T LoadFontFile
000000f6 T FontLoadDFontx
00000108 D fSRegs
00000170 T FontLoadMinix
000001e7 T main
00000508 T FontLoadBdf

回答

size -A