Éditeurs de liens, chargeurs et exécutables

Quelle affirmation concernant le fichier objet (.o) produit par le compilateur à partir d'un fichier source est correcte ?

  1. AC'est un programme complet directement exécutable par l'OS
  2. BC'est simplement le code source compressé, sans langage machine
  3. CIl contient du langage machine, mais les adresses des fonctions et variables situées dans d'autres fichiers ne sont pas encore fixées
Afficher la réponse et l'explication

Réponse : C. Il contient du langage machine, mais les adresses des fonctions et variables situées dans d'autres fichiers ne sont pas encore fixées

Un fichier objet contient le langage machine traduit des fonctions du fichier, les valeurs initiales des variables, la liste des noms définis ou référencés (table des symboles) et la liste des emplacements où des adresses seront renseignées ultérieurement (informations de relocalisation). Les instructions appelant une fonction d'un autre fichier, comme printf, conservent une valeur provisoire faute de connaître l'adresse. L'éditeur de liens rassemble plusieurs fichiers objets, fixe les adresses et produit l'exécutable.

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 rôle principal de l'éditeur de liens (linker) ?
  2. Quelle description de la résolution des symboles effectuée par l'éditeur de liens est correcte ?
  3. Quelle description de la relocalisation effectuée par l'éditeur de liens est correcte ?
  4. Lors de l'édition de liens d'un programme C, l'erreur « undefined reference to `foo' » (référence non définie à foo) apparaît. Quelle est la cause la plus probable ?
  5. La même fonction globale void init(void), sans static, est définie à la fois dans a.c et b.c, puis on effectue l'édition de liens. Que se passe-t-il ?

Comparatifs sur ce thème