Suppression optimisée des symboles inutilisés dans les versions GCC et ld
Lors de la création d'exécutables, en particulier pour les systèmes embarqués basés sur ARM, l'optimisation de la taille de l'exécutable est crucial pour améliorer les performances. Un problème notable est la présence de symboles inutilisés dans le binaire, contribuant à un gonflement inutile.
Pour atténuer ce problème dans les environnements GCC et ld, une approche en deux étapes est utilisée :
Étape 1 : Séparation des sections de code
Utilisation des indicateurs du compilateur -fdata-sections et -ffunction-sections demande au compilateur de diviser le code de chaque unité de traduction en sections distinctes représentant des fonctions, des classes et des variables externes. Cela permet d'isoler les symboles inutilisés.
Étape 2 : suppression des sections non référencées
Pendant la phase de liaison, invoquer l'éditeur de liens avec l'indicateur d'optimisation -Wl,--gc -sections déclenche l'éditeur de liens pour supprimer les sections qui manquent de références. Cela garantit que les symboles inutilisés sont exclus de l'exécutable final.
Par exemple, en considérant un fichier test.cpp avec deux fonctions dont une est inutilisée, la commande suivante générerait un exécutable qui omet la fonction inutilisée :
gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections
En incorporant cette approche en deux étapes, les symboles inutilisés peuvent être efficacement supprimés, réduisant considérablement la taille de l'exécutable final, améliorant ainsi les performances de chargement dans systèmes embarqués aux ressources limitées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!