Comment les bibliothèques statiques établissent-elles des liens avec les dépendances?
Dire que j'ai libA. Cela dépend par exemple libSomething pour le simple fait qu'un non inline méthode de libA fait un appel à une méthode dans libSomething.h. Comment fonctionne le lien de dépendance dans ce cas? Ne libA ont pour lier statiquement à libSomething lorsqu'il est compilé, ou un utilisateur de libA (une application à l'aide libA) nécessité de lier à la fois à libA et libSomething?
Grâce
source d'informationauteur jmasterx
Vous devez vous connecter pour publier un commentaire.
Liaison statique est une simple copie de l'ensemble des éléments (fonctions, constantes, etc) dans l'exécutable. Si une bibliothèque statique de code contient des références à certains éléments de la bibliothèque, ces références ne deviennent des dépendances dans l'exécutable. La situation est la même si vous avez un lien d'une bibliothèque à la place de l'exécutable.
Ce fil explique comment ça se passe dans Linux.
Une bibliothèque statique est plus ou moins une simple archive de dissocier objet binaire les fichiers (*.o ou *.obj), lors de la compilation de l'archive, aucune vérification n'est faite que pour les dépendances. Lorsque l'un lié un binaire exécutable (ou la bibliothèque partagée /DLL) de l'éditeur de liens vérifie pour toutes les dépendances nécessaires, et seulement alors, vous alerte à toutes les questions.
Durant le processus de compilation le compilateur traduit le code dans un format temporaire, nous allons l'appeler un fichier objet. Dans le fichier d'objet, il y a une liste de symboles que le compilateur n'a pas pu résoudre, généralement définitions ailleurs. Le lien entre la phase est en charge de la résolution de ces symboles.
Le processus de génération des flux de fichiers à l'éditeur de liens jusqu'à ce que tous les symboles sont résolus. Il n'y a pas de dépendance physique des listes, des listes de symboles à résoudre. Cela permet de symboles être résolue par l'utilisation de différentes bibliothèques. Par exemple, on peut vouloir utiliser une bibliothèque Windows pour Windows problèmes spécifiques; un linux bibliothèque pour linux questions spécifiques. Ce n'est pas dit explicitement qu'un programme est tributaire de l'une des Fenêtres de la bibliothèque; elle peut être aussi dépendante de la Linux.
Certains compilateurs peuvent générer de la dépendance des listes, habituellement pour une utilisation dans un processus de construction. Cependant, la responsabilité ultime est au programmeur.