Einschließlich boost function.hpp, ohne es zu benutzen, erhöht sich die Größe meiner Binärdatei um 200k. Warum?

8

Ich arbeite an einem eingebetteten Prozessor, so dass die binäre Größe sehr wichtig ist. Ich versuche, die Standardbibliothek zu vermeiden. Ich möchte jedoch std :: function verwenden. Ich habe "function.hpp" aus Boost extrahiert, und ich versuche, das zu verwenden, aber einfach function.hpp zu verwenden, erhöht die Größe meiner binären 200k, was es größer macht, als mein Prozessor akzeptieren kann. Wenn ich die Standardbibliothek einschließe, erhöht sie nur meine binäre 60k. Ich kann es nicht herausfinden, wenn ich noch keine der Vorlagen benutze, sollte es keinen Overhead geben. Und selbst wenn ich das tue, kann ich mir nicht vorstellen, dass es 200k Code wert ist. Ich benutze gcc 4.7, und ich habe Debugging-Informationen von dem, was ich "-g0" sagen kann, deaktiviert und Optimierungen "-O2" eingeschaltet.

Jede Hilfe wäre sehr willkommen.

    
Kendrick Taylor 05.02.2013, 00:42
quelle

1 Antwort

2

GCC enthält einige Symbolinformationen in die kompilierte Binärdatei, selbst wenn Sie -g0 verwenden. Um wirklich alle Symbole loszuwerden, sollte man die Befehlszeilenoption --strip-all für den Linker verwenden.

Da die Größe der ausführbaren Datei für Sie wichtig ist, sollten Sie auch -fdata-sections und -ffunction-sections für den Compiler und --gc-sections für den Linker berücksichtigen.

    
noxmetus 05.02.2013 01:25
quelle

Tags und Links