Maison > développement back-end > C++ > Comment pouvons-nous optimiser les builds GCC et ld pour supprimer les symboles inutilisés et réduire la taille de l'exécutable ?

Comment pouvons-nous optimiser les builds GCC et ld pour supprimer les symboles inutilisés et réduire la taille de l'exécutable ?

Susan Sarandon
Libérer: 2024-12-17 09:33:25
original
782 Les gens l'ont consulté

How Can We Optimize GCC and ld Builds to Remove Unused Symbols and Reduce Executable Size?

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal