Préparation LPI Exam 101 - Section 102.3

Linux System Administration · exam

Voir tous les documents en systèmes d'exploitation et cloud

Préparation LPI

Exam 101

102.3. Librairies partagées

Document sous licence Creative commons « by­nc­sa » http://creativecommons.org/licenses/by­nc­sa/2.0/fr/

Sommaire

Librairie statiques et dynamiques

Emplacement des librairies

ldconfig

/etc/ld.so.conf

ldd

LD_LIBRARY_PATH

UPMC - FP – Préparation LPI - v 1.1

2

102.3 Domaines de connaissances

Poids : 1

Identifier les libriaires

Déclarer les chemins d'installation des librairies

Chargement des librairies partagées

UPMC - FP – Préparation LPI - v 1.1

3

102.3 Libraires

Libraires statiques et librairies partagées

Librairies statiques

Liées directement dans le code de l'exécutable

Plus gros exécutables : empreinte mémoire plus importantes

Moins de souplesse qu'avec les librairies partagées : si

modification d'une fonction dans un librairie, obligation de

recompiler la totalité de l'exécutable

Intéressant pour utiliser des applications anciennes qui

poseraient problème avec des librairies partagées plus

Publicité

récentes

Sécurisation des exécutables : suppression du risque de

compromission d'une librairie

Extension : .a

UPMC - FP – Préparation LPI - v 1.1

4

102.3 Libraires

Libraires partagée ou dynamique

L'exécutable contient des références à la librairie dynamique

Chargée en mémoire uniquement à l'utilisation

Peut être partagée par plusieurs applications

Gérer l'accessibilité des librairies partagées

Possibilité d'héberger plusieurs version d'une librairie

Extensions :

● .so

● .so.version

Librairie indispensable au fonctionnement de Linux

● glibc : /lib/libc­2.10.1.so

UPMC - FP – Préparation LPI - v 1.1

5

102.3 Emplacement des libraires

Répertoires habituels d'emplacement des librairies

/lib

/usr/lib

/usr/local/lib

Chemins définis dans le fichier /etc/ld.so.conf

Certaines distributions utilisent plusieurs fichiers de

configurations

En début de fichier  /etc/ld.so.conf :

include /etc/ld.so.conf.d/*.conf

Publicité

Des fichiers avec extension .conf

Après ajout d'un chemin, utilisation de la commande

ldconfig pour prise en compte par le système

UPMC - FP – Préparation LPI - v 1.1

6

102.3 Emplacement des libraires

Chemins définis dans la variable LD_LIBRARY_PATH

Chemins séparés par le caractère ':'

Export

LD_LIBRARY_PATH=/opt/appli/lib:/opt/appli2/lib

Attention : les chemins déclarés dans LD_LIBRARY_PATH

sont utilisés en priorité

Pratique pour tester un nouvelle version de librairie

Lorsque la librairie est installée dans un répertoire mais

l'application la recherche dans un répertoire différent (défini lors

de la phase de compilation par exemple) ou lorsque l'application

recherche la librairie sous un autre nom

Solution : le lien symbolique

ln ­s /usr/lib/mozilla/plugins/nppdf.so

/home/franck/.mozilla/plugins/nppdf.so

UPMC - FP – Préparation LPI - v 1.1

7

102.3 Emplacement des libraires

Lorsqu'une librairie est inexistante

Rechercher (sur internet ou sur les dépôts alternatifs de

paquets) une version compilée pour l'architecture cible ouo le

code source à compiler

Rechercher avec le gestionnaire de paquet de haut niveau un

paquet qui contiendrai la librairie recherchée

● yum whatprovides */lib.foo.so.3

Publicité

UPMC - FP – Préparation LPI - v 1.1

8

102.3 ldd

Lorsque l'application ne fonctionne pas à cause d'un librairie

manquante ou d'une version incompatible

Lorsque qu'une librairie dépend d'une autre librairie inexistante

Commande ldd : affiche la liste des librairies dynamiques

indispensables à l'exécution de la commande

Commande utilisable par tout utilisateur

En fonction d'une déclaration complète du chemin

Si le chemin absolu est spécifié : /lib/ld­linux.so.2

(0x0049c000)

Sinon, ldd cherche la librairie dans les chemin spécifiés

libselinux.so.1 => /lib/libselinux.so.1

(0x008f2000)

Option :

UPMC - FP – Préparation LPI - v 1.1

­v : affiche toutes les informations (version en particulier)

9

102.3 ldd

$ ldd ­d /bin/mv

linux­gate.so.1 =>  (0x00eaa000)

libselinux.so.1 => /lib/libselinux.so.1 (0x00548000)

libacl.so.1 => /lib/libacl.so.1 (0x00a58000)

libattr.so.1 => /lib/libattr.so.1 (0x006e7000)

libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x007d4000)

libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00d7f000)

/lib/ld­linux.so.2 (0x00e27000)

UPMC - FP – Préparation LPI - v 1.1

10

Publicité

102.3 ldd

$ ldd ­v /bin/mv

linux­gate.so.1 =>  (0x00a31000)

....

Version information:

/bin/mv:

libattr.so.1 (ATTR_1.1) => /lib/libattr.so.1

libacl.so.1 (ACL_1.0) => /lib/libacl.so.1

libc.so.6 (GLIBC_2.6) => /lib/tls/i686/cmov/libc.so.6

libc.so.6 (GLIBC_2.3) => /lib/tls/i686/cmov/libc.so.6

libc.so.6 (GLIBC_2.4) => /lib/tls/i686/cmov/libc.so.6

libc.so.6 (GLIBC_2.2) => /lib/tls/i686/cmov/libc.so.6

libc.so.6 (GLIBC_2.3.4) => /lib/tls/i686/cmov/libc.so.6

libc.so.6 (GLIBC_2.1) => /lib/tls/i686/cmov/libc.so.6

libc.so.6 (GLIBC_2.1.3) => /lib/tls/i686/cmov/libc.so.6

libc.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libc.so.6

/lib/libselinux.so.1:

ld­linux.so.2 (GLIBC_2.3) => /lib/ld­linux.so.2

libdl.so.2 (GLIBC_2.1) => /lib/tls/i686/cmov/libdl.so.2

libdl.so.2 (GLIBC_2.0) => /lib/tls/i686/cmov/libdl.so.2

.....

UPMC - FP – Préparation LPI - v 1.1

11

Quelques conseils LPI...

UPMC - FP – Préparation LPI - v 1.1

12