Éditeurs de liens, chargeurs et exécutables

Sous Linux, dans quel cas incrémente-t-on généralement le numéro de version du soname, comme le « .1 » de libfoo.so.1 ?

  1. ADès qu'un seul bogue est corrigé
  2. BLorsqu'on déplace le fichier de la bibliothèque dans un autre répertoire
  3. CLorsqu'on effectue une modification qui rompt la compatibilité ABI avec les anciens programmes, comme changer les arguments d'une fonction ou l'agencement d'une structure
Afficher la réponse et l'explication

Réponse : C. Lorsqu'on effectue une modification qui rompt la compatibilité ABI avec les anciens programmes, comme changer les arguments d'une fonction ou l'agencement d'une structure

Un programme à liens dynamiques utilise à l'exécution la bibliothèque partagée désignée par son soname. Une correction préservant la compatibilité se fait en remplaçant simplement la bibliothèque sous le même soname, et s'applique à tous les programmes. En revanche, si l'on change le type des arguments ou la taille d'une structure, les anciens programmes l'appelleraient sur de fausses hypothèses ; on incrémente donc le numéro du soname pour la traiter comme une bibliothèque distincte, installable à côté de l'ancienne version.

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

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

  1. Que permet de savoir la commande ldd appliquée à un exécutable sous Linux ?
  2. Quelle combinaison des formats d'exécutables utilisés par les principaux OS est correcte ?
  3. Lorsqu'une récursion trop profonde dépasse la limite de la pile, que se passe-t-il généralement sous Linux notamment ?
  4. En C, quelle affirmation concernant la valeur initiale d'une variable locale et d'une variable globale déclarées sans valeur initiale est correcte ?
  5. À force de répéter malloc et free, il peut devenir impossible d'allouer un grand bloc d'un seul tenant alors que la mémoire libre totale est suffisante. Comment appelle-t-on ce phénomène ?

Comparatifs sur ce thème