-fvisibility=hidden
masque tous vos symboles par défaut .
Ce que vous devez ensuite faire, c'est choisir les fonctions que vous souhaitez rendre visibles pour les utilisateurs qui se connectent à votre bibliothèque et les rendre visibles en les marquant avec un attribut visible.
Par exemple
void __attribute__((visibility("default"))) Exported()
{
// ...
}
Cela réduit le stockage d'informations de symboles inutiles qui sont privées pour les objets partagés.
Considérons un objet partagé qui a plus de 10 000 symboles (fonctions/variables globales), mais seulement 100 d'entre eux étaient des fonctions publiques accessibles aux utilisateurs de la bibliothèque. Nous pouvons rendre les 100 fonctions uniquement visibles pour les autres et les 9 900 symboles restants resteront confidentiels.
Il peut également être utilisé pour réduire la taille de l'objet partagé, car sa table de relocalisation n'aura que 100 symboles d'informations. Utiliser cet indicateur avec -ffunction-sections -fdata-sections réduira davantage la taille de l'objet partagé en ayant la définition qui est pertinente pour ces 100 symboles.