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.
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.