Verfahren zur Reduzierung der Größe eines Programms

Bin ich produziert, eine hex-Datei zum ausführen auf einem ARM-Prozessor, das will ich halten unter 32K. Es ist derzeit viel größer als das, und ich fragte mich, ob jemand irgendwelche Ratschläge auf was ist der beste Ansatz, um schlank nach unten?

Hier ist, was ich bisher getan habe

  1. Also ich habe 'Größe' auf ihn, um festzustellen, wie groß das hex-file ist.
  2. Dann 'Größe' wieder zu sehen, wie groß jeweils der Objekt-Dateien sind, dass der link zum erstellen der hex-Dateien. Es scheint, die Mehrheit der Größe kommt von externen Bibliotheken.
  3. Dann habe ich 'readelf', um zu sehen, welche Funktionen den meisten Speicher.
  4. Ich durchsuchte den code zu sehen, wenn ich könnte beseitigen, die Aufrufe dieser Funktionen.

Hier, wo ich nicht weiterkommen, gibt es einige Funktionen, die ich nicht direkt aufrufen (z.B. _vfprintf) und ich kann nicht finden, was es nennt, so kann ich die entfernen Sie das nennen (ich glaube, ich brauche es nicht).

Also, was sind die nächsten Schritte?

Antwort zu Antworten:

  • Wie ich sehen kann, gibt es Funktionen aufgerufen, die bis zu sehr viel Speicher. Ich kann jedoch nicht finden, was ruft es.
  • Ich weglassen möchten, die diese Funktionen (wenn möglich), aber ich kann nicht finden, was ist, ruft Sie! Aufgerufen werden könnte aus einer beliebigen Anzahl von library-Funktionen, die ich Schätze.
  • Der linker arbeitet, wie gewünscht, ich denke, es enthält nur die relevante Bibliothek-Dateien. Wie wissen Sie, wenn nur die relevanten Funktionen sind enthalten? Kannst du ein flag setzen oder so etwas?
  • Ich bin mit GCC
vielleicht kennst du das eine schon, vielleicht ist es ja der Hilfe: muppetlabs.com/~breadbox/software/tiny/teensy.html

InformationsquelleAutor Richard | 2008-10-14

Schreibe einen Kommentar