Linux:プログラムのコードと静的データのサイズを見積もる最良の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/35485

  •  09-06-2019
  •  | 
  •  

質問

C++ プログラムで使用されるコードと静的データの量を推定したいのですが?

実行可能ファイルまたはオブジェクト ファイルを調べてこれを見つける方法はありますか?それとも実行時に何かできるのでしょうか?

objdump と readel は役に立ちますか?

役に立ちましたか?

解決

「サイズ」は伝統的なツールです。「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

readelf 確かに役に立ちます。使用できます -S オプション;すべてのセクションのサイズが表示されます。 .text 実行可能コード(の大部分)です。 .data そして .rodata 静的データです。他にもセクションがあり、その一部は実行時に使用され、その他はリンク時のみに使用されます。

size -A
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top