Éditeurs de liens, chargeurs et exécutables

Quel est le traitement correct d'un symbole faible (weak symbol) par l'éditeur de liens ?

  1. AUn symbole faible est toujours prioritaire sur les autres définitions
  2. BS'il existe une définition ordinaire (forte) de même nom, elle est utilisée ; sinon, la définition faible est utilisée
  3. CUn fichier contenant un symbole faible ne peut pas être lié
Afficher la réponse et l'explication

Réponse : B. S'il existe une définition ordinaire (forte) de même nom, elle est utilisée ; sinon, la définition faible est utilisée

Un symbole faible est une définition de secours : « à utiliser s'il n'y a pas d'autre définition ». Dans le logiciel embarqué, il est courant de fournir le traitement par défaut des gestionnaires d'interruption sous forme de symboles faibles, que l'utilisateur remplace en écrivant une fonction de même nom. Le chevauchement de deux définitions fortes provoque une erreur de définition multiple, mais pas le chevauchement avec une définition faible.

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

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

  1. Quel est le principal objectif de la décoration de noms (mangling), par laquelle le compilateur C++ ajoute au nom d'une fonction des informations comme le type de ses arguments pour former le nom de symbole ?
  2. Quel est l'usage le plus approprié de la fonction dlopen de Linux (équivalent de LoadLibrary sous Windows) ?
  3. Lorsque 100 processus utilisent la même bibliothèque partagée, quelle est l'utilisation correcte de la mémoire physique ?
  4. En désassemblant un fichier objet, on constate que la destination de l'instruction appelant la fonction externe printf a une valeur provisoire comme 0. Quand cette valeur est-elle correctement renseignée ?
  5. Quel est le rôle d'un script d'édition de liens (linker script) utilisé en développement embarqué ?

Comparatifs sur ce thème