私のプロジェクトでは、テンプレート メタプログラミングを多用しています。アクションのほとんどは、非常に長い (マングルされた) シンボル名を持つオブジェクトと関数を生成する再帰テンプレート内で発生します。
ビルド時間はわずか 30 秒ですが、結果として得られる実行可能ファイルは約 1 メガバイトで、ほとんどがシンボル名です。
Linux では、-s
GCC に引数を追加するとサイズが ~300 KiB に減少しますが、テキスト エディターでざっと見ると、そこにはまだ扱いにくい名前がたくさんあることがわかります。OS X で何かを適切に削除する方法が見つかりません。
typeid(x).name()
提供する vtable エントリが大きなチャンクを占めていると思われます。演算子の使用をすべて削除してtypeid
も、Linux ではそれ以上削除されることはありませんでした。デフォルトの例外ハンドラーは、この機能を使用して、キャッチされていない例外のタイプを報告していると思います。
ストリップページを最大化し、実行可能ファイル内のこれらのキロバイト サイズのシンボルを最小化するにはどうすればよいですか?