Qu'est-ce que Bibliothèque statique ?

Archive regroupant de nombreux fichiers objets (.a sous Linux). Lors de l'édition de liens statique, l'éditeur de liens n'en extrait que les objets nécessaires pour les intégrer à l'exécutable.

Nom japonais: 静的ライブラリ

« Bibliothèque statique » apparaît dans 2 questions d'entraînement réparties sur 1 thèmes, dont Éditeurs de liens, chargeurs et exécutables.

Domaine: Éditeurs de liens, chargeurs et exécutables

S'entraîner : questions sur Bibliothèque statique

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 ?

  1. ATous les fichiers objets de la bibliothèque
  2. BSeulement le nom de fichier de la bibliothèque, sans code
  3. CSeulement les fichiers objets de la bibliothèque nécessaires pour résoudre les références non définies
Afficher la réponse et l'explication

Réponse : C. Seulement les fichiers objets de la bibliothèque nécessaires pour résoudre les références non définies

Une bibliothèque statique est une archive regroupant de nombreux fichiers objets. L'éditeur de liens n'extrait de l'archive et n'intègre que les fichiers objets définissant des symboles dont la définition n'a pas encore été trouvée. Ainsi, même avec une bibliothèque contenant de nombreuses fonctions comme la bibliothèque standard, l'exécutable ne grossit que des fonctions utilisées.

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 ?

  1. 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
  2. BPar règle, une seule bibliothèque peut être écrite, et toujours en fin de commande
  3. 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.

« Bibliothèque statique » dans les explications

Questions mentionnant « Bibliothèque statique » (2)

  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 ?

Comparatifs incluant ce terme

Termes associés

Éditeur de liens (linker) Fichier objet ASLR Bibliothèque partagée Chargeur (loader) Code indépendant de la position Décoration de noms (name mangling) Éditeur de liens dynamique Édition de liens dynamique Édition de liens statique

Retour au glossaire