Éditeurs de liens, chargeurs et exécutables

Un programme utilisant l'édition de liens dynamique, copié sur un autre ordinateur, ne démarre pas. Quelle est la cause la plus probable ?

  1. AL'exécutable contenait tout le code des bibliothèques et était trop gros
  2. BUn programme à liens dynamiques ne peut par principe fonctionner que sur l'ordinateur où il a été construit
  3. CLa bibliothèque partagée nécessaire est absente, ou seule une version incompatible est présente
Afficher la réponse et l'explication

Réponse : C. La bibliothèque partagée nécessaire est absente, ou seule une version incompatible est présente

Un programme à liens dynamiques utilise les bibliothèques partagées présentes sur l'ordinateur d'exécution. Si une bibliothèque nécessaire est absente, ou si seule une ancienne version dépourvue de certaines fonctions existe, l'éditeur de liens dynamique ne peut pas effectuer la liaison et le démarrage échoue. Sous Linux, la commande ldd permet de vérifier les bibliothèques partagées requises par un programme et si elles sont trouvées. Pour faciliter la distribution, on choisit parfois volontairement l'édition de liens statique.

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

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

  1. Lors de l'édition de liens avec une bibliothèque statique (fichier .a), qu'est-ce que l'éditeur de liens intègre dans l'exécutable ?
  2. Avec l'éditeur de liens GNU, écrire une bibliothèque statique avant le fichier objet qui l'utilise, comme « gcc -lmylib main.o », peut provoquer une erreur de référence non définie. Quelle en est la raison ?
  3. Quelle description du code indépendant de la position (PIC) est correcte ?
  4. Quel est le rôle de la GOT (table globale des déplacements) utilisée dans les bibliothèques partagées ?
  5. En édition de liens dynamique, quelle description de la liaison différée (lazy binding) utilisant la PLT (table de liaison des procédures) est correcte ?

Comparatifs sur ce thème