Ich muss die Größe meiner ausführbaren Datei stark optimieren ( ARM
Entwicklung) und habe festgestellt, dass in meinem aktuellen Build-Schema ( gcc
+ ld
) nicht verwendete Symbole nicht entfernt werden.
Die Verwendung von arm-strip --strip-unneeded
für die resultierenden ausführbaren Dateien / Bibliotheken ändert nichts an der Ausgabegröße der ausführbaren Datei (ich habe keine Ahnung warum, vielleicht kann es einfach nicht) .
Wie kann ich meine Gebäude-Pipeline so ändern (falls vorhanden) , dass die nicht verwendeten Symbole aus der resultierenden Datei entfernt werden?
Ich würde nicht einmal daran denken, aber meine derzeitige eingebettete Umgebung ist nicht sehr "leistungsfähig" und das Speichern selbst 500K
von 2M
Ergebnissen führt zu einer sehr schönen Steigerung der Ladeleistung.
Aktualisieren:
Leider hat die aktuelle gcc
Version, die ich verwende, keine -dead-strip
Option und das -ffunction-sections... + --gc-sections
for ld
gibt keinen signifikanten Unterschied für die resultierende Ausgabe.
Ich bin schockiert, dass dies sogar zu einem Problem wurde, weil ich mir sicher war, dass gcc + ld
nicht verwendete Symbole automatisch entfernt werden sollten (warum müssen sie sie überhaupt behalten?).
boost
Bibliotheken verwenden, die resultierende .exe
Datei viele nicht verwendete Objektdateien enthält und aufgrund der Spezifikationen meiner aktuellen eingebetteten Laufzeit Das Starten einer 10mb
Anwendung dauert viel länger als beispielsweise das Starten einer 500k
Anwendung.