Bibliotheque logicielle

ÔĽŅ
Bibliotheque logicielle

Bibliothèque logicielle

Page d'aide sur l'homonymie Pour les articles homonymes, voir Bibliothèque (homonymie) et DLL.

En informatique, une biblioth√®que ou librairie[1] logicielle (ou encore, biblioth√®que de programmes) est un ensemble de fonctions utilitaires, regroup√©es et mises √† disposition afin de pouvoir √™tre utilis√©es sans avoir √† les r√©√©crire. Les fonctions sont regroup√©es de par leur appartenance √† un m√™me domaine conceptuel (math√©matique, graphique, tris, etc). Les biblioth√®ques logicielles se distinguent des ex√©cutables dans la mesure o√Ļ elles ne repr√©sentent pas une application. Elles ne sont pas compl√®tes, elles ne poss√®dent pas l'essentiel d'un programme comme une fonction principale et par cons√©quent ne peuvent pas √™tre ex√©cut√©es directement. Les biblioth√®ques peuvent regrouper des fonctions simples (par exemple le calcul d'un cosinus, ou l'inversion d'une matrice) comme des fonctions complexes avec de nombreuses fonctions internes non accessibles directement. L'int√©r√™t des biblioth√®ques r√©side dans le fait qu'elles contiennent du code utile que l'on ne d√©sire pas avoir √† r√©√©crire √† chaque fois.

Les bibliothèques logicielles sont parfois regroupées en un framework, de façon à constituer un ensemble cohérent et complémentaire de bibliothèques.

Sommaire

Origine du nom

Le nom de biblioth√®que est d√©riv√© du comportement humain : quand on ignore comment faire quelque chose de technique (par exemple, planter des graines dans un jardin) et que l'on veut pourtant le faire, on peut aller se documenter en biblioth√®que et consulter des livres indiquant comment proc√©der sans avoir √† r√©inventer la proc√©dure soi-m√™me et √† chaque fois.

Les programmes proc√®dent un peu de la m√™me fa√ßon : plut√īt que de coder une proc√©dure courante dans chaque programme en ayant besoin (ce qui veut dire qu'une m√™me proc√©dure serait r√©√©crite autant de fois sur un ordinateur qu'il y a de programmes susceptibles de l'utiliser), on rassemble ces proc√©dures dans des biblioth√®ques. Si un programme a une fonction √† remplir et que celle-ci se trouve en biblioth√®que, il l'utilisera directement.

Conception et organisation des bibliothèques

L'organisation classique des biblioth√®ques passe par un d√©coupage th√©matique des fonctions, permettant au programmeur de retrouver plus facilement la fonction dont il a besoin. Ce d√©coupage th√©matique permet de classer les biblioth√®ques selon les services qu'elles rendent :

  • Biblioth√®ques de bas niveau ou biblioth√®ques syst√®me : elles fournissent des services d'interface avec le syst√®me d'exploitation, avec les p√©riph√©riques, ou fournissent des outils g√©n√©riques :
  • Biblioth√®ques de haut niveau (aussi appel√©es biblioth√®ques m√©tier, elles interagissent avec celles de bas niveau) : les fonctions qu'elles contiennent sont propres √† une activit√© sp√©cifique:
    • bo√ģtes √† outils graphiques : ensemble de fonctions permettant de g√©rer, d'animer et d'afficher des objets graphiques complexes (par exemple : OpenGL),
    • biblioth√®ques d'op√©rateurs de traitement d'image : ensemble de fonctions destin√©es √† structurer l'information dans une image √† des fins d'analyse,
    • gestion de structures de donn√©es utilisateur,
  • Autres biblioth√®ques :


L'interface de programmation (plus communément appelée par son acronyme anglais API pour Application Programming Interface) est la partie visible d'une bibliothèque ou d'un ensemble de bibliothèques, permettant au programmeur de choisir parmi les fonctions disponibles celle qui va lui rendre le service dont il a besoin. Les API se présentent comme une liste des noms des fonctions ou/et classes disponibles, avec une documentation sur les paramètres à leur fournir et sur les résultats retournés.

Mise en Ňďuvre des biblioth√®ques au format du syst√®me d'exploitation

Principes

Pour que le code exécutable puisse accéder aux instructions d'une fonction d'une bibliothèque qu'il utilise, il faut que chaque appel de fonction dans le code soit associé à l'adresse effective de la première instruction de la fonction appelée dans la bibliothèque.

Pour cela, il existe plusieurs m√©thodes et outils, qui interviennent apr√®s l'√©tape de compilation :

  • l'√©dition de liens assure la mise en place, dans le code ex√©cutable de l'application, des instructions de branchement vers les fonctions externes (issues d'une ou de plusieurs biblioth√®ques) ;
  • si l'√©dition de lien est dynamique, intervient un chargeur permettant, lors de l'ex√©cution du programme, d'amener en m√©moire les fonctions des biblioth√®ques utilis√©es, de sorte que lorsqu'une fonction est appel√©e, son code soit disponible en m√©moire.
  • si l'√©dition est statique: le code des fonctions utilis√©es par l'application est int√©gr√© au code de l'application qui devient par l√†-m√™me autonome.

Le chargement des biblioth√®ques peut survenir de deux mani√®res :

  • √Ä la vol√©e lors d'un appel par le programme qui en exploite une fonction (liaison tardive), cette technique a l'avantage de ne charger que le code r√©ellement n√©cessaire,
  • Ou au chargement du programme en vue de son ex√©cution.


Une bibliothèque est en principe partagée par le système d'exploitation afin de ne pas dupliquer son code dans toutes les applications y faisant appel. Voir cependant la possibilité de versions simultanées.

Bibliothèques chargées dynamiquement

Une bibliothèque dynamique, nommée Dynamic Link Library (.dll) pour Windows et nommée shared object (.so) ou "dynamic library" sous UNIX, est un fichier de bibliothèque logicielle utilisé par un programme exécutable, mais n'en faisant pas partie.

Ce fichier contient des fonctions qui pourront être appelées pendant l'exécution d'un programme, sans que celles-ci soient incluses dans son exécutable.

Les avantages des bibliothèques dynamiques sont:

  • la r√©duction de la taille d'un ex√©cutable, puisque certaines parties du logiciel se situent en dehors de lui,
  • et la mise √† jour possible des fonctions utiles pour toutes les applications qui les utilisent. Les applications b√©n√©ficient alors automatiquement des corrections ou des am√©liorations fonctionnelles de la biblioth√®que.

Bibliothèques partagées

Lorsque plusieurs programmes utilisent les mêmes bibliothèques, il est judicieux de ne charger celles-ci qu'une seule fois en mémoire et de laisser tous les programmes en utiliser la même copie. On parle alors de bibliothèques partagées. Une bibliothèque peut être dynamique sans pour autant être partagée, et partagée sans être dynamique.

Le fait de partager des biblioth√®ques implique de fortes contraintes de conception afin que les appels de fonction par un programme, susceptibles de modifier l'√©tat interne de la biblioth√®que, ne perturbent pas les autres programmes qui l'utilisent √©galement. Dans un syst√®me multit√Ęche, comme on ne ma√ģtrise pas les moments o√Ļ les fonctions de la biblioth√®que sont appel√©es, il est possible qu'une fonction soit appel√©e plusieurs fois simultan√©ment. On appelle r√©entrance la facult√© d'une biblioth√®que √† pouvoir √™tre utilis√©e simultan√©ment par plusieurs applications. On parle alors de biblioth√®que r√©entrante ou m√™me de fonction r√©entrante.

Versions simultanées

Lors du remplacement d'une version de bibliothèque par une autre, il arrive que certains programmes fonctionnant avec l'ancienne version ne puissent plus fonctionner avec la nouvelle. Le problème est résolu par un mécanisme de version de bibliothèque et de compatibilité entre version

Cas spécifiques dans différents systèmes d'exploitation

Windows

DLL signifie Dynamic Link Library, ou en fran√ßais Biblioth√®que de liens dynamiques, dans le cadre du Syst√®me d'exploitation Windows, et compatibles (wine, ReactOS). Traditionnellement, le nom de ces fichiers se termine par l'extension ¬ę .dll ¬Ľ. Une DLL peut contenir du code ou des ressources qui sont alors rendus disponibles √† d'autres applications.

Le code contenu dans une DLL n'est charg√© qu'une seule fois en m√©moire. Ainsi, lorsqu'un processus tente de charger une DLL qui est d√©j√† en m√©moire, le code existant est mapp√© dans la m√©moire du programme sans qu'un second chargement soit n√©cessaire, gagnant de la place en RAM. Lorsque tous les processus qui exploitaient une DLL se sont termin√©s, suivant le type de la biblioth√®que et les param√®tres Windows, l'espace m√©moire qui lui √©tait attribu√© peut √™tre lib√©r√© ou non modifi√© afin que les prochains programmes h√ītes n'aient pas √† r√©effectuer l'op√©ration de chargement.

Une DLL peut √™tre li√©e statiquement ou dynamiquement √† un programme. Dans le premier cas, le programme d√©clare explicitement avoir besoin d'une fonction contenue dans une biblioth√®que et la r√©solution de liens est effectu√©e par l'√©diteur de lien au moment de la phase de compilation du programme. Le programme inclut alors dans sa structure binaire la liste des biblioth√®ques n√©cessaires √† son bon fonctionnement dans sa "table des exportations" (export table). Le chargeur de programmes de Windows v√©rifie alors lors de l'ex√©cution du programme que toutes les DLL requises sont disponibles, et si ce n'est pas le cas, stoppe le chargement en affichant un message indiquant que des d√©pendances n√©cessaires √† l'ex√©cutable n'ont pu √™tre trouv√©es. Dans le second cas, c'est le programme qui demande explicitement le chargement d'une biblioth√®que durant son ex√©cution √† l'aide de l'API LoadLibrary afin d'obtenir un pointeur sur la fonction d√©sir√©e. Cette derni√®re approche est plus p√©nible car elle n√©cessite un effort plus important de la part du programmeur, mais elle permet d'une part de ne pas emp√™cher l'ex√©cution d'un programme li√© √† une biblioth√®que dont l'existence sur le syst√®me h√īte n'est pas certaine, d'autre part constitue parfois le seul moyen d'acc√©der √† des fonctions qui ne sont pas d√©clar√©es dans les fichiers d'interface fournis par l'√©diteur et qui sont donc √† consid√©rer comme "non document√©es".[c]

Des langages comme C, C++ ou Delphi sont aptes à créer des DLL qui peuvent être exploitées par d'autres programmes. De nombreux outils de développement qui proposent des bibliothèques d'exécution à l'instar des MFC ou de la VCL de Borland proposent soit une liaison statique (intégration directe du code dans l'exécutable) soit une liaison dynamique (la bibliothèque est alors à distribuer sous forme de DLL).

L'utilisation de DLL permet de mettre à disposition du code et de rendre modulaire l'architecture d'une application. La mise à jour de celle-ci peut également se faire en remplaçant uniquement les DLL obsolètes. Néanmoins, l'utilisation de plusieurs versions concurrentes de DLL est problématique sous Windows et conduit à certaines incompatibilités regroupées sous le terme DLL Hell.

Les DLL sont recherchées dans le répertoire courant, puis dans les répertoires inclus dans la variable d'environnement path comme c:\windows et c:\windows\system32.

Unix, GNU/Linux et BSD

Sous les systèmes de type Unix, les bibliothèques seront conventionnellement nommées à l'aide de l'extension .so (shared objet), .dylib (dynamic library de MacOSX), .a (archive, Unix traditionnels), .sl ("shared library") ou encore .sa ("shared archive", SunOS).

Les fichiers .so sont recherchés dans les répertoires décrits par /etc/ld.so.conf (documentation disponible avec man ldconfig).

Les bibliothèques peuvent évoluer et différentes versions peuvent être utilisées sur le même système, par exemple:

/usr/lib/libxml2.so (lien)
/usr/lib/libxml2.so.2 (lien)
/usr/lib/libxml2.so.2.6.6
/usr/lib/libxml.so.1 (lien)
/usr/lib/libxml.so.1.8.17

Exemples

C:\WINNT\system32\wsock32.dll  
/usr/lib/libxml2.so

Bibliothèques de langages de scripts

Les langages de scripts comme python ou perl ont leurs propres bibliothèques, qui sont souvent écrites dans le langage dit "de script".

Par exemple la biblioth√®que python2.4-pychart se compose notamment des trois fichiers suivants :

  • /usr/lib/python2.4/site-packages/pychart/log_coord.py
  • /usr/lib/python2.4/site-packages/pychart/axis_doc.py
  • /usr/lib/python2.4/site-packages/pychart/object_set.py

Notes et références

  1. ‚ÜĎ Le terme de librairie est consid√©r√© par certains comme un abus de langage r√©sultant d'une mauvaise traduction du faux ami en anglais library ; cependant le mot librairie d√©signait au Moyen √āge d'abord l'ensemble des livres (la librairie de Montaigne), c'est ainsi qu'il est pass√© dans la langue anglaise et tomb√© en d√©su√©tude dans ce sens en fran√ßais remplac√© par un terme d'origine grecque plut√īt que latine comme libraria du latin imp√©rial.

Voir aussi

Liens externes

DLL sous Windows
Bibliothèques en C et C++
  • Portail de l‚Äôinformatique Portail de l‚Äôinformatique
Ce document provient de ¬ę Biblioth%C3%A8que logicielle ¬Ľ.

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Bibliotheque logicielle de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Biblioth√®que (logicielle) ‚ÄĒ Biblioth√®que logicielle Pour les articles homonymes, voir Biblioth√®que (homonymie) et DLL. En informatique, une biblioth√®que ou librairie[1] logicielle (ou encore, biblioth√®que de programmes) est un ensemble de fonctions utilitaires, regroup√©es… ‚Ķ   Wikip√©dia en Fran√ßais

  • Biblioth√®que Logicielle ‚ÄĒ Pour les articles homonymes, voir Biblioth√®que (homonymie) et DLL. En informatique, une biblioth√®que ou librairie[1] logicielle (ou encore, biblioth√®que de programmes) est un ensemble de fonctions utilitaires, regroup√©es et mises √† disposition… ‚Ķ   Wikip√©dia en Fran√ßais

  • Biblioth√®que logicielle ‚ÄĒ Pour les articles homonymes, voir Biblioth√®que (homonymie) et DLL. En informatique, une biblioth√®que ou biblioth√®que de programmes est un ensemble de fonctions utilitaires, regroup√©es et mises √† disposition afin de pouvoir √™tre utilis√©es sans… ‚Ķ   Wikip√©dia en Fran√ßais

  • Inventor (bibliotheque logicielle) ‚ÄĒ Inventor (biblioth√®que logicielle) Open Inventor est une biblioth√®que logicielle d√©velopp√©e √† l origine par la soci√©t√© Silicon Graphics (IRIS Inventor) pour permettre de g√©rer des graphes de sc√®nes en trois dimensions. Cette biblioth√®que,… ‚Ķ   Wikip√©dia en Fran√ßais

  • Inventor (biblioth√®que logicielle) ‚ÄĒ Open Inventor est une biblioth√®que logicielle d√©velopp√©e √† l origine par la soci√©t√© Silicon Graphics (IRIS Inventor) pour permettre de g√©rer des graphes de sc√®nes en trois dimensions. Cette biblioth√®que, orient√©e objet et √©crite en C++, est… ‚Ķ   Wikip√©dia en Fran√ßais

  • Ming (bibliotheque logicielle) ‚ÄĒ Ming (biblioth√®que logicielle) Pour les articles homonymes, voir Ming. Ming est une biblioth√®que logicielle permettant de cr√©er des animations Adobe Flash (.swf). Elle est souvent utilis√©e en tant que module PHP, ce qui permet de g√©n√©rer… ‚Ķ   Wikip√©dia en Fran√ßais

  • Ming (biblioth√®que logicielle) ‚ÄĒ Pour les articles homonymes, voir Ming. Ming est une biblioth√®que logicielle permettant de cr√©er des animations Adobe Flash (.swf). Elle est souvent utilis√©e en tant que module PHP, ce qui permet de g√©n√©rer dynamiquement des animations flash. De… ‚Ķ   Wikip√©dia en Fran√ßais

  • Bullet (biblioth√®que logicielle) ‚ÄĒ Bullet (moteur physique) Pour les articles homonymes, voir Bullet (homonymie). Moteur Physique Bullet ‚Ķ   Wikip√©dia en Fran√ßais

  • XFT (biblioth√®que logicielle) ‚ÄĒ Pour les articles homonymes, voir XFT. Xft ‚Ķ   Wikip√©dia en Fran√ßais

  • Biblioth√®que (informatique) ‚ÄĒ Biblioth√®que logicielle Pour les articles homonymes, voir Biblioth√®que (homonymie) et DLL. En informatique, une biblioth√®que ou librairie[1] logicielle (ou encore, biblioth√®que de programmes) est un ensemble de fonctions utilitaires, regroup√©es… ‚Ķ   Wikip√©dia en Fran√ßais


Share the article and excerpts

Direct link
… Do a right-click on the link above
and select ‚ÄúCopy Link‚ÄĚ

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.