Éditeurs de liens, chargeurs et exécutables
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 ?
- AL'éditeur de liens traite de gauche à droite et n'extrait pas les fonctions qui ne sont pas encore référencées au moment où il lit la bibliothèque
- BPar règle, une seule bibliothèque peut être écrite, et toujours en fin de commande
- CÉcrire la bibliothèque en premier efface son contenu
Afficher la réponse et l'explication
Réponse : A. L'éditeur de liens traite de gauche à droite et n'extrait pas les fonctions qui ne sont pas encore référencées au moment où il lit la bibliothèque
L'éditeur de liens GNU traite les fichiers dans l'ordre de la ligne de commande et, lorsqu'il rencontre une bibliothèque statique, n'en extrait que les objets résolvant « des références dont la définition n'a pas encore été trouvée ». Si la bibliothèque vient en premier, les références de main.o n'existent pas encore à ce moment, rien n'est extrait, et il ne revient pas en arrière après avoir lu main.o. Le principe est donc d'écrire les bibliothèques après ceux qui les utilisent.
Continuer : 9 autres questions sur Éditeurs de liens, chargeurs et exécutables