Maison >développement back-end >C++ >Comment supprimer les symboles inutilisés des exécutables C/C avec GCC et ld ?

Comment supprimer les symboles inutilisés des exécutables C/C avec GCC et ld ?

DDD
DDDoriginal
2024-12-28 07:55:14676parcourir

How to Strip Unused Symbols from C/C   Executables with GCC and ld?

Comment éliminer les symboles inutilisés dans les exécutables C/C à l'aide de GCC et ld

Introduction

L'optimisation de la taille de l'exécutable peut être cruciale dans les systèmes ou ressources embarqués -environnements contraints. Pour y parvenir, il est important de supprimer les symboles inutilisés de l'exécutable.

Suppression des symboles GCC et ld

GCC et ld fournissent des options pour supprimer les symboles inutilisés lors de la compilation et de la liaison :

Options GCC

  • -fdata-sections : Sépare le code et les données en sections distinctes dans chaque unité de traduction.
  • -ffunction-sections : divise les fonctions en sections individuelles.

ld Options

  • -Wl,--gc-sections : demande à ld de supprimer les éléments non référencés sections.

Implémentation

Pour supprimer les symboles inutilisés, suivez ces étapes :

  1. Compilez les fichiers sources avec GCC en utilisant -fdata-sections et -ffunction- drapeaux de sections.
  2. Liez les fichiers objets ensemble en utilisant ld avec -Wl,--gc-sections flag.

Exemple

Supposons que nous ayons un fichier test.cpp avec deux fonctions dont une est inutilisée :

int use(int a);
int unused(int a);

Pour supprimer la fonction inutilisée , compilez et liez comme suit :

gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections

Cette commande demandera à GCC de séparer le code et les données en sections et à ld de les supprimer. sections non référencées, ce qui donne un exécutable de taille réduite.

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!

Déclaration:
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