Éditeurs de liens, chargeurs et exécutables

Lors de la création d'une bibliothèque partagée, quel est l'avantage de n'exporter que les fonctions utilisées de l'extérieur et de régler la visibilité des symboles des fonctions internes sur « hidden » ?

  1. ALes fonctions internes sont chiffrées et deviennent impossibles à analyser
  2. BLe nombre de symboles traités par l'éditeur de liens dynamique diminue, ce qui accélère le chargement, et les appels internes n'ont plus besoin de passer par la PLT
  3. CLa bibliothèque devient exécutable sur tous les OS
Afficher la réponse et l'explication

Réponse : B. Le nombre de symboles traités par l'éditeur de liens dynamique diminue, ce qui accélère le chargement, et les appels internes n'ont plus besoin de passer par la PLT

Un symbole exporté d'une bibliothèque partagée pouvant être remplacé par une définition de même nom dans un autre module, même les appels internes doivent passer par la PLT ou la GOT. En le rendant hidden, il devient invisible de l'extérieur, le nombre de symboles examinés par l'éditeur de liens dynamique diminue, et les appels internes peuvent être effectués directement en relatif au PC. Les conflits de noms avec d'autres bibliothèques sont aussi évités, et l'ABI exportée reste réduite.

S'entraîner sur ce thème Retour au thème

Autres questions sur Éditeurs de liens, chargeurs et exécutables

  1. En C++, quel est le mécanisme correct par lequel les constructeurs d'objets globaux s'exécutent avant main ?
  2. Quelle affirmation concernant le fichier objet (.o) produit par le compilateur à partir d'un fichier source est correcte ?
  3. Quel est le rôle principal de l'éditeur de liens (linker) ?
  4. Quelle description de la résolution des symboles effectuée par l'éditeur de liens est correcte ?
  5. Quelle description de la relocalisation effectuée par l'éditeur de liens est correcte ?

Comparatifs sur ce thème