Catégorie : Comprendre     Tags :      

    Retrouvez cet article dans : Linux Pratique Hors série 8

    Chaque application (votre navigateur de fichiers, votre client de messagerie, votre navigateur Web, votre traitement de texte, etc.) sous sa forme exécutable fait appel à un ensemble de bibliothèques de sous-programmes. Chacun de ces sous-programmes est capable d'exécuter une fonction bien spécifique : calculs mathématiques, écriture/lecture de données, etc.Très souvent appelées « librairies » par abus de langage (erreur de traduction du terme anglophone library), les bibliothèques sont ainsi indispensables au bon fonctionnement d'une application. D'ailleurs, lorsque vous installez un nouveau paquet de logiciels à l'aide de votre gestionnaire de paquets (ou en ligne de commande), vous constatez que bien souvent l'installation dudit paquet requiert l'installation conjointe d'une ou plusieurs bibliothèques. Autre cas de figure : vous venez de récupérer un exécutable sur un site quelconque, mais, à son lancement, celui-ci refuse de démarrer en vous signalant qu'il vous manque telle ou telle bibliothèque.

    Il arrive que les bibliothèques soient directement incluses dans l'image du fichier exécutable d'une application. Dans ce cas, cette dernière est totalement autonome et on parle de « bibliothèque statique ». Parallèlement, il existe des « bibliothèques dynamiques » (aussi appelées « bibliothèques partagées ») : dans ce cas, les sous-programmes ne sont pas inclus dans le fichier exécutable de l'application : en revanche, leur présence est absolument nécessaire au moment de l'exécution ; il faudra donc les installer au préalable. Plusieurs applications peuvent avoir besoin des mêmes sous-programmes, c'est pourquoi l'utilisation de bibliothèques partagées est très pratique et très répandue. En outre, l'utilisation de ces bibliothèques externes permet d'alléger considérablement la taille du fichier exécutable.

    Les différentes bibliothèques installées sur votre système se trouvent dans les répertoires /lib et /usr/lib. Une bibliothèque statique est un fichier d'extension .a (pour archive) ; une bibliothèque dynamique a pour extension .so (pour shared object). Le nom complet d'une bibliothèque partagée se termine par son numéro de version, sous la forme majeur.mineur (correspondant respectivement à des modifications majeures ou mineures de version de la bibliothèque).

    Par exemple, la bibliothèque libkdeprint.so.4.2.0 désigne la révision de majeur 4 et de mineur 2.0 de la bibliothèque kdeprint. Si le développeur de la bibliothèque effectue une modification importante de la bibliothèque (ex. : l'ajout d'une fonction supplémentaire), alors la nouvelle version sera distribuée avec un numéro majeur supérieur. En revanche, si la modification est minime, c'est le numéro mineur qui sera supérieur à celui de la version précédente et le majeur restera le même.

    Comme n'importe quel logiciel, les bibliothèques évoluent et sont actualisées plus ou moins fréquemment. Une application peut fort heureusement utiliser une bibliothèque plus récente que la version avec laquelle elle a été compilée, à la condition que le numéro majeur soit le même. C'est pourquoi, dans vos répertoires de bibliothèques, vous remarquerez la présence de nombreux liens symboliques, un pour chaque majeur, pointant vers la bibliothèque la plus récente compatible avec le majeur. Par exemple :

     lrwxrwxrwx	1 root root	16 2006-06-08 11:50 libwrap.so.0 -> libwrap.so.0.7.6
    -rw-r—r--	1 root root	27052 2006-03-01 18:28 libwrap.so.0.7.6

    Comme précisé plus haut, les bibliothèques sont indispensables voire essentielles, comme la célèbre bibliothèque libc, la bibliothèque standard du langage C. Sans elle, les commandes du système ne fonctionneraient plus ! En effet, la libc est utilisée par l'ensemble des applications. Son rôle est primordial.

    Pour connaître la liste des bibliothèques utilisées par un fichier exécutable, vous pouvez saisir la commande suivante : ldd chemin/vers/executable. Par exemple :

    ~$ ldd /usr/bin/evince
    linux-gate.so.1 =>  (0xffffe000)
    libdjvulibre.so.15 => /usr/lib/libdjvulibre.so.15 (0xb7db6000)
    libkpathsea.so.4 => /usr/lib/libkpathsea.so.4 (0xb7da3000)
    libgnomeui-2.so.0 => /usr/lib/libgnomeui-2.so.0 (0xb7d1d000)
    [...]

    La liste est encore longue : pas loin d'une cinquantaine de bibliothèques sont utilisées par le lecteur PDF Evince ! Le plus important est de veiller à ne pas effacer par erreur une bibliothèque utilisée par un ou plusieurs programme(s)...

    Retrouvez cet article dans : Linux Pratique Hors série 8

    Posté par Fleur Brosseau (Fleur) | Signature : Fleur Brosseau | Article paru dans

    Laissez une réponse

    Vous devez avoir ouvert une session pour écrire un commentaire.


    • Il y a actuellement

    • 471 articles/billets en ligne.