Quelle est la différence entre la liaison statique et dynamique?


Meilleure réponse

Avant de passer à la différence, voyons le processus de liaison en bref.

Pourquoi linker?

Lorsque vous écrivez du code C (ou tout autre langage), il est stocké au format .c.

#include

int main(){

printf("quora");

return 0;

}

Maintenant, ce programme passe par la phase de compilation au cours de laquelle ce le code source est converti en instructions en langage machine. Ce sont les fichiers objets stockés au format .o ou .obj. Si nous avons 2 fichiers séparés, nous aurons 2 fichiers obj séparés. Ces fichiers ne sont que la traduction de votre programme, pour exécuter ces programmes, nous devons générer un exécutable que le système dexploitation peut réellement exécuter. Pour cela, nous utilisons un éditeur de liens.

Maintenant, léditeur de liens crée un seul fichier exécutable à partir de nombreux fichiers objets. Maintenant, dans notre programme C, nous avons utilisé la fonction main (), mais où est sa définition. La portée du compilateur est limitée à un seul fichier, il ne recherche donc pas les références qui peuvent avoir été déclarées et définies dans dautres fichiers.

Léditeur de liens recherche dans plusieurs fichiers cette définition de fonction «main ()» et les relie. Je viens maintenant à votre question.

Liaison statique vs dynamique:

  1. In liaison statique , tous les modules de la bibliothèque sont copiés dans limage exécutable finale. Lorsque le programme est chargé, le système dexploitation ne place quun seul fichier dans la mémoire qui contient à la fois le code source et les bibliothèques de référence. Alors que dans le liaison dynamique , seuls les noms des bibliothèques externes ou partagées sont placés dans la mémoire. La liaison dynamique permet à de nombreux programmes dutiliser une seule copie du module exécutable.
  2. La liaison statique est effectuée par les éditeurs de liens lors de la dernière étape de la compilation alors que la liaison dynamique est effectuée au moment de lexécution par le système dexploitation.
  3. Fichiers liés statiquement consomme plus de disque et de mémoire car tous les modules sont déjà liés. Mais dans Liaison dynamique, une seule copie du module de référence est stockée, utilisée par de nombreux programmes, économisant ainsi de la mémoire et de lespace disque.
  4. Dans Liaison statique, si le programme source externe est modifié, alors ils doivent être recompilés et réassociés. Mais en cas de liaison dynamique , un seul module doit être mis à jour et recompilé.
  5. Les programmes liés statiquement sont plus rapides que leur homologue dynamique.
  6. Étant donné que le fichier lié ​​statiquement contient chaque package et module, aucun problème de compatibilité ne se produit. Alors que dans le liaison dynamique , puisque les fichiers de bibliothèque sont stockés séparément, il peut y avoir des problèmes de compatibilité (par exemple, un fichier de bibliothèque est compilé par la nouvelle version du compilateur).
  7. Les programmes liés statiquement prennent toujours un temps de chargement constant alors que le temps est variable dans les programmes liés dynamiquement.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *