私は現在、MinGWコンパイラを使用するためにライブラリを移植しています(自分で書いたのではなく、移植するだけです)。このライブラリは、あらゆる種類の C++ の「ブラック マジック」 (複数の継承、テンプレートのテンプレートのテンプレート、非常に重いマクロなど) を備えた、非常に重量級のライブラリです。
現在、数週間後、すべてが正常にコンパイルされ、うまく機能しているように見えます (デモと同様に、単体テストも機能します)。
しかし、私を悩ませているのは、MSVC バイナリとは対照的に、MinGW バイナリのサイズが非常に大きいことです。独自の非 MS システム ライブラリを含める必要があるため、MinGW バイナリは一般にわずかに大きいことはわかっていますが、MinGW の場合は 33 MB、MSVC の場合は 13 MB です。そして、それが「リリース」(-O3 および -s フラグ) バージョンです!
これらは、MinGW でコンパイルするフラグです。
-c -O3 -s -MMD -march=native -frtti
リンカーの場合は次のとおりです。
-shared -s -static-libgcc -static-libstdc++
rtti によってある程度のサイズが追加されることはわかっていますが、MSVC バイナリにも含まれている必要があります。また、静的な libgcc および libstdc++ ライブラリは、それほど大きくありません... それともできますか?
ここで何が欠けていますか?通常、MinGW と MSVC のサイズの違いはそれほど大きくありません。