Lorsqu’un programme C est compilé, le compilateur génère du code objet. Après avoir généré le code objet, le compilateur appelle également linker. L’une des tâches principales de l’éditeur de liens est de créer du code de fonctions de bibliothèque (par exemple printf(), scanf(), sqrt(), ..etc) Disponible pour votre programme. Un éditeur de liens peut accomplir cette tâche de deux façons, en copiant le code de la fonction de bibliothèque dans votre code objet, ou en prenant des dispositions pour que le code complet des fonctions de bibliothèque ne soit pas copié, mais rendu disponible au moment de l’exécution.,

la liaison statique et les bibliothèques statiques sont le résultat de la copie par l’éditeur de liens de toutes les fonctions de bibliothèque utilisées dans le fichier exécutable. La liaison statique crée des fichiers binaires plus volumineux et nécessite plus d’espace sur le disque et la mémoire principale. Exemples de bibliothèques statiques (bibliothèques qui sont liées statiquement) sont, .un fichiers sous Linux et .fichiers lib dans Windows.

étapes pour créer une bibliothèque statique créons et utilisons une bibliothèque statique sous UNIX ou un système d’exploitation similaire à UNIX.
1. Créez un fichier C qui contient des fonctions dans votre bibliothèque.,div>

#include <stdio.h>
void fun(void)
{
printf("fun() called from a static library");
}



We have created only one file for simplicity., Nous pouvons également créer plusieurs fichiers dans la bibliothèque.

2. Créer un fichier d’en-tête de la bibliothèque

void fun(void);



3. Compiler les fichiers de bibliothèque.

 gcc -c lib_mylib.c -o lib_mylib.o 

4. Créer une bibliothèque statique., Cette étape consiste à regrouper plusieurs fichiers objets dans une bibliothèque statique (voir ar pour plus de détails). La sortie de cette étape est bibliothèque statique.

 ar rcs lib_mylib.a lib_mylib.o 

5. Maintenant, notre bibliothèque statique est prête à l’emploi. À ce stade, nous pourrions simplement copier lib_mylib.un ailleurs de l’utiliser. À des fins de démonstration, conservons la bibliothèque dans le répertoire courant.

créons un programme pilote qui utilise la bibliothèque statique créée ci-dessus.
1., Créer un fichier C avec la fonction principale

#include "lib_mylib.h"
void main()
{
fun();
}



2., Compilez le programme du pilote.

gcc -c driver.c -o driver.o

3. Liez le programme de pilote compilé à la bibliothèque statique. Notez que-L. est utilisé pour indiquer que la bibliothèque statique est dans le dossier courant (voir ceci pour plus de détails sur les options-l et-l).

gcc -o driver driver.o -L. -l_mylib

4. Exécutez le programme pilote

./driver fun() called from a static library

voici quelques points importants à propos des bibliothèques statiques.
1. Pour une bibliothèque statique, le code réel est extrait de la bibliothèque par l’éditeur de liens et utilisé pour construire l’exécutable final au point où vous compilez/construisez votre application.,

2. Chaque processus obtient sa propre copie du code et des données. Lorsque, comme dans le cas des bibliothèques dynamiques, il ne s’agit que de code partagé, les données sont spécifiques à chaque processus. Pour les bibliothèques statiques empreinte mémoire sont plus grandes. Par exemple, si tous les outils du système window étaient liés statiquement, plusieurs dizaines de mégaoctets de RAM seraient gaspillés pour un utilisateur typique, et l’utilisateur serait ralenti par beaucoup de pagination.

3. Puisque le code de la Bibliothèque est connecté au moment de la compilation, l’exécutable final n’a aucune dépendance sur la bibliothèque au moment de l’exécution, c’est-à-dire, aucun coût de chargement supplémentaire au moment de l’exécution, cela signifie que vous n’avez pas besoin de transporter une copie de la bibliothèque utilisée et que vous avez tout sous votre contrôle et qu’il n’y a pas de dépendance.

4. Dans les bibliothèques statiques, une fois que tout est regroupé dans votre application, vous n’avez pas à vous soucier que le client aura la bonne bibliothèque (et la bonne version) disponible sur son système.

5. Un inconvénient de bibliothèques statiques est, pour tout changement(jusqu’à-gradation) dans les bibliothèques statiques, vous devez recompiler le programme principal à chaque fois.

6., Un avantage majeur des bibliothèques statiques étant préféré, même maintenant « est la vitesse”. Il n’y aura pas d’interrogation dynamique des symboles dans les bibliothèques statiques. De nombreux logiciels de ligne de production utilisent des bibliothèques statiques même aujourd’hui.

liaison dynamique et bibliothèques dynamiques la liaison dynamique ne nécessite pas que le code soit copié, elle se fait en plaçant simplement le nom de la bibliothèque dans le fichier binaire. La liaison réelle se produit lorsque le programme est exécuté, lorsque le fichier binaire et la bibliothèque sont en mémoire. Des exemples de bibliothèques dynamiques (bibliothèques liées au moment de l’exécution) sont, .so sous Linux et .dll dans Windows.,

Nous allons bientôt couvrir plus de points sur les bibliothèques dynamiques et les étapes pour les créer.

Cet article est compilé par Abhijit Saha et examiné par L’équipe GeeksforGeeks. Veuillez écrire des commentaires si vous trouvez quelque chose d’incorrect, ou si vous souhaitez partager plus d’informations sur le sujet discuté ci-dessus.

attention lecteur! N’arrêtez pas d’apprendre maintenant. Obtenez tous les concepts importants de la théorie CS pour les entretiens SDE avec le cours de théorie CS à un prix adapté aux étudiants et devenez prêt pour l’industrie.

Tags de L’Article:
tags De La pratique:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *