私のC++プログラムで&の静的データがどのくらいのコードを使用しているのか見積もりたいですか?Linux:プログラムのコードと静的データサイズを見積もる最も良い方法は何ですか?
実行可能ファイルまたはオブジェクトファイルを調べることでこれを見つける方法はありますか?または、私は実行時に何かできるのでしょうか?
will objdump & readelf help?
私のC++プログラムで&の静的データがどのくらいのコードを使用しているのか見積もりたいですか?Linux:プログラムのコードと静的データサイズを見積もる最も良い方法は何ですか?
実行可能ファイルまたはオブジェクトファイルを調べることでこれを見つける方法はありますか?または、私は実行時に何かできるのでしょうか?
will objdump & readelf help?
「サイズ」は従来のツールです。 "readelf"にはたくさんのオプションがあります。
$ size /bin/sh
text data bss dec hex filename
712739 37524 21832 772095 bc7ff /bin/sh
readelf
実際に役立ちます。 -S
オプションを使用できます。すべてのセクションのサイズが表示されます。 .text
は実行可能コードの大部分です。 .data
および.rodata
は静的なデータです。他のセクションもあり、そのうちのいくつかは実行時に使用され、その他はリンク時にのみ使用されます。
あなたはフットプリントの削減のために集中するための関数とデータ構造を特定する次のステップを取るしたい場合は、nmの--sizeソート引数はお見せすることができます
$ 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