267 votes

Quelle est la différence entre les deux .donc, .la et de .un des fichiers de la bibliothèque?

Je connais un .so le fichier est une sorte de bibliothèque dynamique, beaucoup de threads peuvent partagé ce genre de bibliothèques, donc il n'est pas nécessaire d'avoir plus d'une copie de cette lib dans la mémoire. alors quelle est la différence entre .a et .la, sont-ils tous des bibliothèques statiques?

si dynamique lib ont un grand avantage par rapport statique librariess, alors pourquoi il y a encore beaucoup de bibliothèques statiques?

J'ai aussi ce qu'il faut savoir le mécanisme sous-jacent à la charge dynamique lib et les bibliothèques statiques, et comment le morceau de code dans lib dynamique ou statique de la lib est appelée lorsque ce code est utilisé par certains programmes? la partie du noyau je dois lire? et ce relative de commande de Linux et de l'utilité que je devrais connaître afin de savoir comment un processus est en cours d'exécution? ( Que je ne connais ld commande maintenant)

quand je devrais essayer de construire le code en .so ou .a? lequel est le mieux?

[mirror@home ins_openvpn]$ ls lib/openvpn/plugins/
openvpn-plugin-auth-pam.a   openvpn-plugin-auth-pam.so  openvpn-plugin-down-root.la
openvpn-plugin-auth-pam.la  openvpn-plugin-down-root.a  openvpn-plugin-down-root.so
[mirror@home ins_openvpn]$ ls lib/openvpn/plugins/ -l
total 96
-rw-r--r-- 1 mirror mirror 22892 Sep  2 23:25 openvpn-plugin-auth-pam.a
-rwxr-xr-x 1 mirror mirror   931 Sep  2 23:25 openvpn-plugin-auth-pam.la
-rwxr-xr-x 1 mirror mirror 23621 Sep  2 23:25 openvpn-plugin-auth-pam.so
-rw-r--r-- 1 mirror mirror 17228 Sep  2 23:25 openvpn-plugin-down-root.a
-rwxr-xr-x 1 mirror mirror   932 Sep  2 23:25 openvpn-plugin-down-root.la
-rwxr-xr-x 1 mirror mirror 18805 Sep  2 23:25 openvpn-plugin-down-root.so 

348voto

Barmar Points 135986

.si les fichiers sont des bibliothèques dynamiques. Le suffixe signifie "objets partagés", parce que toutes les applications qui sont liées avec la bibliothèque d'utiliser le même fichier, plutôt que de faire une copie de l'exécutable.

.un fichiers de bibliothèques statiques. Le suffixe signifie "archive", parce qu'ils sont en fait juste une archive (réalisé avec l' ar commande -- un prédécesseur de l' tar c'est maintenant seulement utilisé pour la fabrication de bibliothèques) de l'original .o fichiers de l'objet.

.la fichiers de bibliothèques statiques utilisés par la GNU "libtools". Vous pouvez trouver plus d'informations à leur sujet dans cette question: qu'est-Ce que libtool .la fichier?

Statique et dynamique des bibliothèques ont chacun des avantages et des inconvénients.

Statique pro: L'utilisateur utilise toujours la version de la bibliothèque que vous avez testé votre application, donc il ne devrait pas être surprenant de problèmes de compatibilité.

Statique con: Si un problème est résolu dans une bibliothèque, vous devez redistribuer votre demande afin de prendre avantage de. Toutefois, à moins d'une bibliothèque que les utilisateurs sont susceptibles de mettre à jour sur leur propre, vous auriez peut-être besoin pour ce faire de toute façon.

Dynamique pro: Votre processus de la mémoire est plus petit, parce que la mémoire utilisée pour la bibliothèque est amorti entre tous les processus à l'aide de la bibliothèque.

Dynamique pro: les Bibliothèques peuvent être chargés à la demande au moment de l'exécution; c'est bon pour les plugins, de sorte que vous n'avez pas à choisir les plugins pour être utilisé lors de la compilation et de l'installation du logiciel. De nouveaux plugins peuvent être ajoutés à la volée.

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