Linux_lib - Kasimashi/Systemes-embarques GitHub Wiki

Lib

Le répertoire /lib contient les bibliothèques principales du système ainsi que les modules du noyau. Comme tous les systèmes d’exploitation modernes, Linux utilise un système de bibliothèques partagées ou shared libraries qui permet de ne stocker une bibliothèque utilisée par plusieurs programmes qu’une seule fois dans le système.

D’autres avantages sont induits, par exemple la mise à jour unique par simple remplacement de la bibliothèque partagée et bien sûr l’optimisation de la mémoire en cas d’utilisation simultanée de la bibliothèque par plusieurs programmes. Le répertoire /lib doit contenir les bibliothèques partagées utilisées par les commandes des répertoires /bin et /sbin.

Pour connaître les bibliothèques partagées utilisées par un programme, on peut utiliser la commande ldd :

└──╼ $ldd /bin/cp
	linux-vdso.so.1 (0x00007ffcbcb8c000)
	libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f883d908000)
	libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f883d8fd000)
	libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007f883d8f5000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f883d720000)
	libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f883d688000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f883d682000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f883d987000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f883d65e000)

La totalité des programmes Linux utilise ces deux bibliothèques :

  • libc.so.6 est la bibliothèque principale du système aussi appelée glibc ;
  • ld-linux.so.2 est le chargeur ou loader qui permet de charger les bibliothèques nécessaires au programme.

Le nom d’une bibliothèque partagée correspond souvent à un lien symbolique sur la version réelle de la bibliothèque, ce qui permet de faire coexister plusieurs versions de bibliothèques partagées :

└──╼ $ls -l /lib/libc*
-rwxr-xr-x 1 root root 4101324 fév 29 2000 /lib/libc-2.1.3.so
lrwxrwxrwx 1 root root 13 sep 25 2000 /lib/libc.so.6 -> libc-2.1.3.so