私は、すべての大きな静的に宣言された配列を見つけることによって(MINGW/GCCを使用して)実行可能ファイルのサイズを縮小しようとしています。集計サイズとともにデータシンボルのリストをダンプする方法はありますか?私はnmとobjdumpのmanページを見てきましたが、これまでのところ有用なものは見当たりません。オブジェクトファイルの静的宣言のサイズをリストする方法は?
Thx。
私は、すべての大きな静的に宣言された配列を見つけることによって(MINGW/GCCを使用して)実行可能ファイルのサイズを縮小しようとしています。集計サイズとともにデータシンボルのリストをダンプする方法はありますか?私はnmとobjdumpのmanページを見てきましたが、これまでのところ有用なものは見当たりません。オブジェクトファイルの静的宣言のサイズをリストする方法は?
Thx。
GNU binutilsから--print-size
オプション(略称-S
)のnm
ユーティリティを使用してください。たとえば、オブジェクト・ファイル内の20個の最大のシンボルを見つけるために、次の操作を行います。大規模な静的配列のサイズを小さくすることは、あなたがどのような場合にはいきおそらく何で、プログラムの実行時のメモリフットプリントを削減することを
nm --print-size --size-sort objfile.o | tail -20
nmにバグがあると思います。 -Sはサイズを印刷するはずですが、それはありません。これは--size-sortフラグでのみ実行されます。 – Saideira
リンカは、その情報を提供するMAPファイルを生成できます。
コンパイルとリンクするGCCを使用している場合は、リンカにリンカ・オプションを渡すと:
-Wl,<comma-separate-options-list>
ldを直接呼び出す場合は、明らかにだけ、リンカオプションを渡します。
必要なリンカオプションは次のとおりです。
-Map=<mapfilename>
ます。また、マップファイルにクロスリファレンステーブルを含めるために--cref
を使用することができます。
注意を、これらの大規模な配列も完全に初期化されない限り、.exeファイルのサイズには影響しません。もしそうであれば、おそらくツールチェーンを見つける必要はありません! – Clifford