Différence : 1. La bibliothèque statique sera connectée au code cible lorsque le programme est compilé, et la bibliothèque statique ne sera plus nécessaire lorsque le programme est en cours d'exécution ; Le programme est compilé, mais il le sera. Il est chargé lorsque le programme est en cours d'exécution, la bibliothèque dynamique doit donc exister lorsque le programme est en cours d'exécution. 2. Les fichiers générés par les bibliothèques dynamiques sont relativement petits et les fichiers générés par les bibliothèques statiques sont relativement volumineux.
L'environnement d'exploitation de ce tutoriel : système CentOS 6, ordinateur Dell G3.
Mêmes points :
Les bibliothèques statiques et les bibliothèques dynamiques sont créées par des fichiers .o. Par conséquent, nous devons d'abord compiler le programme source dans un fichier .o via gcc
Différence :
1 Le temps de chargement du code est différent
2 Les règles de compilation sont différentes
Le nom de la bibliothèque de classes dynamiques est généralement libxxx.so, et la bibliothèque de fonctions dynamiques n'est pas compilée dans le code cible lors de la compilation, votre programme n'appelle la fonction correspondante dans la bibliothèque de fonctions que lorsqu'il atteint la fonction concernée, donc le fichier exécutable généré par la bibliothèque de fonctions dynamiques est relativement petit
Bibliothèque dynamique ; compilation : La chose la plus importante est une option de ligne de commande GCC, -shared Cette option spécifie de générer une bibliothèque de liens dynamiques, par exemple :
g++ -shared -o libd1.so d1.o /*Créer le fichier de bibliothèque dynamique d1.so basé sur le fichier cible intermédiaire d1.o*/
g++ - shared -o libd2.so d2.o /*Créer le fichier de bibliothèque dynamique d2.so basé sur le fichier cible intermédiaire d2.o*/
Le nom de la bibliothèque de classes est généralement libxxx.a ; utilisez la bibliothèque de fonctions statiques Le fichier compilé est relativement volumineux, car toutes les données de l'ensemble de la bibliothèque de fonctions seront intégrées dans le code cible. est évident, c'est-à-dire que le programme d'exécution compilé ne nécessite pas de support de bibliothèque de fonctions externe, car toutes les fonctions utilisées ont été compilées. Bien entendu, ce sera aussi son inconvénient, car si la bibliothèque de fonctions statiques change, votre programme devra être recompilé.
Sous UNIX, utilisez la commande ar pour créer ou exploiter une bibliothèque statique
ar Archivefile objfile
archivefile : archivefile est le nom de la bibliothèque statique
objfile : objfile est le nom du fichier cible intermédiaire avec l'extension .o, il peut y avoir plusieurs parallèles
Par exemple :
g++ -o hello.o -c hello.cpp ar cqs libHello.a hello.o
Recommandations associées : "Tutoriel vidéo Linux"
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!