A propos des symboles de déboguage

La plupart des programmes et des bibliothèques sont compilés par défaut avec les symboles de déboguage (option de gcc -g). Laissez-moi vous expliquer ce que sont ces symboles de déboguage et pour quelle raison vous ne les voudriez pas.

Un programme compilé avec des symboles de déboguage signifie qu'un utilisateur peut exécuter un programme ou une bibliothèque via un débogueur, et que les résultats de ce débogueur seront facilement utilisables. Ces symboles de déboguage augmentent également la taille du programme ou de la bibliothèque de façon significative.

Avant que vous vous demandiez si ces symboles de déboguage feront une grande différence, voici quelques statistiques. Utilisez-les pour vous forger votre propre conclusion.

Les tailles peuvent différer selon le compilateur utilisé et la version de la bibliothèque C utilisée pour lier les programmes dynamiques, mais vos résultats seront similaires si vous comparez les programmes avec et sans symboles de déboguage. Après avoir terminé ce chapitre et supprimé tous les symboles de déboguage de tous les binaires de LFS, j'ai regagné quelques 102Mo d'espace disque. Belle différence!

Pour supprimer les symboles de déboguage d'un fichier binaire (qui doit être un binaire de type a.out ou ELF), lancez strip --strip-debug filename. Vous pouvez utiliser des jokers si vous devez supprimer les symboles de déboguage de plusieurs fichiers (utilisez quelque chose comme strip --strip-debug $LFS/usr/bin/*). La plupart des gens n'utiliseront sans doute jamais un débogueur sur leurs logiciels, donc enlever ces symboles vous fera gagner beaucoup de place disque.

Vous trouverez plus d'information dans le guide d'optimisation, qui peut être trouvé à http://cvs.linuxfromscratch.org/index.cgi/hints/.