J'ai besoin d'optimiser sévèrement la taille de mon exécutable ( ARM
développement) et j'ai remarqué que dans mon schéma de construction actuel ( gcc
+ ld
) les symboles inutilisés ne sont pas supprimés.
L'utilisation de arm-strip --strip-unneeded
pour les exécutables / bibliothèques résultants ne change pas la taille de sortie de l'exécutable (je ne sais pas pourquoi, peut-être que cela ne peut tout simplement pas) .
Quelle serait la façon (si elle existe) de modifier mon pipeline de construction, de sorte que les symboles inutilisés soient supprimés du fichier résultant?
Je n'y penserais même pas, mais mon environnement embarqué actuel n'est pas très "puissant" et économise même 500K
des 2M
résultats dans une très belle amélioration des performances de chargement.
Mettre à jour:
Malheureusement, la gcc
version actuelle que j'utilise n'a pas l' -dead-strip
option et le -ffunction-sections... + --gc-sections
for ld
ne donne aucune différence significative pour la sortie résultante.
Je suis choqué que cela soit même devenu un problème, car j'étais sûr que cela gcc + ld
devrait automatiquement supprimer les symboles inutilisés (pourquoi doivent-ils même les conserver?).
boost
bibliothèques, le .exe
fichier résultant contient de nombreux fichiers objets inutilisés et en raison des spécifications de mon runtime intégré actuel , le démarrage d'une 10mb
application prend beaucoup plus de temps que, par exemple, le démarrage d'une 500k
application.