GNU/Linux >> Tutoriels Linux >  >> Linux

C++ -fvisibility=hidden -fvisibility-inlines-hidden

-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.


Linux
  1. Que signifient les symboles affichés par Ls -f ?

  2. Linux - Les variables d'environnement sont-elles visibles pour les utilisateurs non privilégiés sous Linux ?

  3. Comment appeler la fonction C en C++, la fonction C++ en C (mélanger C et C++)

  4. nm :Commande pour lister les symboles dans les fichiers objets.

  5. C++ :quelle bibliothèque regex dois-je utiliser ?

Comment compiler et exécuter des programmes C, C++ sous Linux

Comment puis-je profiler du code C++ exécuté sous Linux ?

Minuterie périodique simple C++ Boost ASIO ?

Nom de symbole étrange dans la sortie de la commande nm

C++ obtient le nom de la distribution Linux\version

Interface de ligne de commande C++