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!