Procédé pour la réduction de la taille d'un fichier exécutable

Je suis à la production d'un fichier hex pour s'exécuter sur un processeur ARM qui je veux garder en dessous de 32 KO. Il est actuellement beaucoup plus que cela et je me demandais si quelqu'un pourrait avoir quelques conseils sur la meilleure approche pour amincir vers le bas?

Voici ce que j'ai fait jusqu'à présent

  1. J'ai donc lancer "taille" à déterminer la taille du fichier hex est.
  2. Puis "taille" à nouveau pour voir la taille de chacun des fichiers objets sont le lien pour créer les fichiers hex. Il semble que la majorité de la taille vient de bibliothèques externes.
  3. Puis j'ai utilisé "readelf' pour voir les fonctions qui prennent le plus de mémoire.
  4. J'ai cherché dans le code pour voir si je pouvais éliminer les appels à ces fonctions.

Voici où j'ai coincé, il y a des fonctions que je n'appelez pas directement (par exemple, _vfprintf) et je ne trouve pas ce que les appels afin que je puisse supprimer l'appel (comme je pense que je n'en ai pas besoin).

Alors, quelles sont les prochaines étapes?

Réponse à des réponses:

  • Que je peux voir, il y a des fonctions d'être appelé, ce qui prend beaucoup de mémoire. Je ne peux cependant trouver ce qui est de l'appeler.
  • Je veux oublier ces fonctions (si possible) mais je ne peux pas trouver ce qui est de les appeler! Pourrait être appelée à partir de n'importe quel nombre de fonctions de la bibliothèque, je suppose.
  • L'éditeur de liens de travail comme vous le souhaitez, je pense, elle ne comprend que la bibliothèque en question des fichiers. Comment savez-vous si seulement les fonctions sont incluses? Pouvez-vous définir un indicateur ou quelque chose pour ça?
  • Je suis en utilisant GCC
InformationsquelleAutor Richard | 2008-10-14