私が取り組んでいるプロジェクトの 1 つは、別の非常に大規模な社内ライブラリに依存しています。
私のプロジェクトの CMake ファイルは、コンパイラ、コンパイラ スイッチなどを指定するライブラリ CMake ファイルに基づいて生成されます。古いライブラリではコンパイラが gcc 4.3.2 として指定されていましたが、新しいライブラリでは gcc 4.7.0 が指定されていました。
新しいライブラリ バージョンに移行したとき、私のプロジェクト用に生成されたバイナリは、35MB から 123MB に 10 倍ほど大きくなりました。
.a ファイルに対して nm を実行すると、同じ .o ファイルがライブラリの両方のバージョンの .a ファイルを生成することがわかりました。
ただし、新しいライブラリ バージョンで生成された .a ファイルには、シンボルが ~30% 多いようです (wc -l でカウント)。
このバイナリサイズの爆発の潜在的な理由は何ですか? 多くの可能性があることは理解していますが、私は完全に無知です-ヒントがあれば役立ちます.