Frage

Jungs, Ich habe ein Projekt, das ich für den ARM Cortex-A8-Prozessor zusammengestellt. Ich mache Gebrauch von GCC, dies zu tun. Derzeit ist die Größe meiner ausführbar ist 220,1 KB. Jetzt habe ich meine Make-Datei ändern und ich füge hinzu, die die Flagge -mthumb, die Make-Datei Zeile sieht etwa so -

gcc -mcpu=cortex-a8 -mthumb -marm -mfloat-abi=softfp -mfpu=neon

Ich tue dies Veränderungen in allen meinen Makefiles und ich baue mein Projekt, aber die ausführbar ich schließlich noch erhalte weiterhin von 220,1 KB sein.

Ich habe eine weitere Änderung an meine Befehlszeile, fügte ich die -mthumb-Zusammenwirkungs Option

gcc -mcpu=cortex-a8 -mthumb -mthumb-interwork -marm -mfloat-abi=softfp -mfpu=neon

Wieder einmal ich das gleiche Größe ausführbare 220,1 KB bekommen. Bin ich etwas fehlt, während dies zu tun?

Ich schrieb ein kleines Programm, die kleinsten von zwei Zahlen zu finden und ich es mit der folgenden Befehlszeile kompilierte

gcc main.c -o main

Ich erhalte eine 8,5 KB ausführbare

Als nächstes ich eine

gcc -mthumb main.c -o main

ich noch ein 8,5 KB ausführbare erhalten.

Was ist hier falsch?

Ich habe eine cat /proc/cpuinfo zu sehen, ob Daumen wirklich von meinem Prozessor unterstützt wird, und ich sehe, dass es in der Tat unterstützt wird. Ich erhalte -

Processor: ARMv7 Processor rev 5 (v7l)
Features: swp half thumb fastmult vfp edsp neon vfpv3
....
....
War es hilfreich?

Lösung

ich denke, -marm Mittel ein Arm ohne Daumen haben, versuchen zu entfernen -marm.

Andere Tipps

Es ist schwer zu sagen, ohne den eigentlichen Code zu haben, aber ich habe ein paar Vorschläge.

  1. Aktivieren Optimierungen. (Z.B. -O3 -ffunction Schnitte -fdata Schnitte)
  2. Isolieren Sie die ausführbare Datei sicher, dass die Debug-Informationen gezählt wird nicht zu machen.
  3. überprüfen Sie die eigentliche Code (.text) Größe, nicht die Dateigröße. Vielleicht gibt es einige padding geht. Sie können für diese Verwendung objdump.
  4. Dump den Assembler-Code (-S-Schalter) und prüfen, ob es tatsächlich ARM-Anweisungen in einem Fall und Daumen in einem anderen produziert.

Bei einigen Compilern Daumen ist die Standardeinstellung, wenn für ARMv7 kompilieren. Sind Sie sicher, dass Ihre ursprüngliche ausführbare Datei nicht auf Daumen gebaut wurde?

Versuchen Sie, mit MnO-Daumen Aufbau und sehen, ob die Codegröße erhöht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top