665 votes

Différence entre bibliothèques statiques et partagés ?

Quelle est la différence entre les bibliothèques statiques et partagés ?

J’utilise Eclipse et il y a plusieurs types de projets, y compris les bibliothèques statiques et les bibliothèques partagées ? Faut-il un avantage par rapport à l’autre ?

860voto

Petesh Points 29374

Les bibliothèques partagées sont .(ou dans Windows .dll, ou OS X .dylib) des fichiers. Tout le code concernant la bibliothèque est dans ce fichier, et il est référencé par les programmes de l'utiliser au moment de l'exécution. Un programme à l'aide d'une bibliothèque partagée ne fait référence au code qu'il utilise dans la bibliothèque partagée.

Les bibliothèques statiques sont .une (ou dans Windows .lib) des fichiers. Tout le code concernant la bibliothèque est dans ce fichier, et il est relié directement dans le programme au moment de la compilation. Un programme à l'aide d'une bibliothèque statique prend des copies du code qu'il utilise à partir de la bibliothèque statique et fait partie du programme. [Windows a aussi .lib fichiers qui sont utilisés à titre de référence .les fichiers dll, mais ils agissent de la même manière que la première].

Il y a des avantages et des inconvénients de chaque méthode.

Les bibliothèques partagées de réduire la quantité de code est dupliqué dans chaque programme qui rend l'utilisation de la bibliothèque, en gardant les fichiers binaires petit. Il vous permet également de remplacer l'objet partagé avec celui qui est fonctionnellement équivalent, mais peut-être ajouté des avantages de performance sans avoir besoin de recompiler le programme qui l'utilise. Bibliothèques partagées sera, cependant, ont un faible coût supplémentaire pour l'exécution des fonctions ainsi qu'un temps de chargement de coût comme tous les symboles dans la bibliothèque besoin d'être connecté à des choses qu'ils utilisent. En outre, les bibliothèques partagées peuvent être chargées dans une application au moment de l'exécution, qui est le mécanisme général pour la mise en œuvre binaire plug-in de systèmes.

Les bibliothèques statiques augmentation de la taille globale de la binaire, mais cela signifie que vous n'avez pas besoin de transporter le long d'une copie de la bibliothèque qui est utilisé. Comme le code est connecté au moment de la compilation il n'y a pas tout supplémentaire au moment de l'exécution des frais de chargement. Le code est là, simplement.

Personnellement, je préfère les bibliothèques partagées, mais l'utilisation de bibliothèques statiques en avoir besoin pour s'assurer que le binaire n'a pas beaucoup de dépendances externes qui peuvent être difficile à atteindre, telles que des versions spécifiques de la norme C++ de la bibliothèque ou des versions spécifiques de l'Boost C++ de la bibliothèque.

426voto

Paul Richter Points 1860

Une bibliothèque statique est comme dans une librairie et une bibliothèque partagée est comme... une bibliothèque. Avec l'ancien, vous obtenez votre propre copie du livre/de la fonction à la maison; avec ce dernier, vous et tout le monde d'aller à la bibliothèque pour utiliser le même livre/fonction. Donc, toute personne qui veut utiliser l' (partagé) de la bibliothèque a besoin de savoir où il est, parce que vous avez à "aller chercher" le livre/la fonction. Avec une bibliothèque statique, le livre/la fonction est à votre propre, et vous garder à l'intérieur de votre maison/programme, et une fois que vous l'avez vous n'avez pas de soins où et quand vous l'avez.

99voto

StackedCrooked Points 12247

Simplifié :

  • Liaison statique : un fichier exe grand
  • Liaison dynamique : un fichier exe petite ainsi qu’un ou plusieurs fichiers .dll (fichiers .so sous Linux)

36voto

Tarski Points 2671

Les bibliothèques statiques sont compilés dans le cadre d'une application, alors que les bibliothèques partagées sont pas. Lorsque vous distribuez une application qui repose sur le partage de la libaries, les bibliothèques, par exemple. dll sur MS Windows besoin d'être installé.

Les avantages des bibliothèques statiques, c'est que il n'y a pas des dépendances nécessaires à l'utilisateur l'exécution de l'application - par exemple, ils n'ont pas de mise à niveau de leurs DLL de quoi que... Les inconvénients, c'est que votre demande est de plus grande taille, parce que vous l'expédition avec toutes les bibliothèques dont il a besoin.

Ainsi en tant que leader pour les petites applications, bibliothèques partagées offrir à l'utilisateur la possibilité d'utiliser leur propre, peut-être une meilleure version de la bibliothèque plutôt que de compter sur une partie de l'application

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X