Maison >développement back-end >C++ >Quelle est la différence entre les bibliothèques statiques, les objets partagés et les DLL en C/C ?

Quelle est la différence entre les bibliothèques statiques, les objets partagés et les DLL en C/C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 10:56:02632parcourir

 What's the Difference Between Static Libraries, Shared Objects, and DLLs in C/C  ?

Distinguer les bibliothèques statiques, les objets partagés et les DLL dans le développement C/C

Comprendre les bibliothèques statiques et partagées

Statique les bibliothèques (fichiers .a) sont incorporées dans une application lors de la phase de liaison, où une copie de l'intégralité de la bibliothèque est intégrée dans l'exécutable final. Par conséquent, l'application est autonome, avec des fonctions de bibliothèque facilement accessibles à tout moment.

En revanche, les objets partagés (fichiers .so) subissent uniquement une vérification de compatibilité d'exécution par rapport à leur fichier d'en-tête (.h) correspondant pendant enchaînement. Ils ne sont chargés qu'au moment de la phase d'exécution, ce qui offre la possibilité de remplacer le fichier ".so" sans recompiler l'application.

La distinction entre les objets partagés et les DLL

Bien que les objets partagés et les bibliothèques de liens dynamiques (DLL) partagent l'extension « .so », ils présentent des différences notables sur les systèmes Linux et compatibles POSIX.

Les objets partagés sont généralement chargés automatiquement au démarrage d'une application. et restent disponibles en tant qu'entités distinctes. Les DLL, cependant, nécessitent un chargement explicite via l'appel dlopen() au sein de l'application.

Archives partagées : une entité unique

Les archives partagées sont des bibliothèques statiques qui ne sont jamais utilisées directement par applications. Ils agissent comme intermédiaires, permettant à d'autres bibliothèques statiques de se lier à elles et d'incorporer des fonctions ou des ressources spécifiques dans leur propre code. Les archives partagées nécessitent des indicateurs de compilation spéciaux (-fPIC et -export-shared) pour être partagées avec des bibliothèques dynamiques.

Notes supplémentaires de la mise à jour

Malgré l'assimilation des objets partagés avec des DLL , l'entreprise où travaillait l'interrogateur utilisait familièrement le terme « DLL » pour désigner les bibliothèques partagées. De plus, la désignation « S » pour les archives partagées était une convention spécifique à l'entreprise plutôt qu'une norme industrielle.

En résumé, les bibliothèques statiques fournissent des applications autonomes, tandis que les objets partagés offrent une flexibilité d'exécution sans sacrifier l'accessibilité du code. Le partage d'archives comble le fossé entre les bibliothèques statiques et partagées, permettant de partager des fonctions sur plusieurs modules.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn