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

时间:2008-08-30 00:03:39

标签: c++ linux unix

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

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

objdump& readelf帮忙?

4 个答案:

答案 0 :(得分:5)

“尺寸”是传统工具。 “readelf”有很多选择。

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

答案 1 :(得分:2)

如果您想进一步确定要专注于减少占地面积的函数和数据结构,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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

size -A