Quand le noyau Linux joue aux poupées russes avec vos bibliothèques partagées
Un développeur curieux nous plonge dans les arcanes de Linux pour disséquer le rôle secret de l'interpréteur binaire. Une promenade instructive au cœur du chargement dynamique qui ravira les amateurs de code.

Le Courrier de l'Oignon adore parfois quitter les sentiers battus de l'absurde pour explorer la pure mécanique informatique. Cette semaine, notre grand tour des recoins cachés du réseau nous a menés vers un carnet de développeur tout ce qu'il y a de plus sérieux, consacré aux bibliothèques partagées sous Linux. L'auteur y rappelle modestement qu'au commencement était le C, et que le vénérable langage s'appuie sur des fonctions pour éviter de réinventer la roue à chaque ligne de code.
En compilant un petit exemple et en auscultant le résultat à l'aide d'outils comme nm ou ldd, on découvre rapidement que certains composants, tel le célèbre printf, ne font pas partie intégrante de l'exécutable mais viennent piocher directement dans la grande bibliothèque standard du système. Jusqu'ici, rien que de très classique pour un administrateur système ou un étudiant en informatique un tantinet assidu.
Là où l'exercice devient délicat et délicieusement pointu, c'est lorsqu'on s'intéresse à l'interpréteur de l'exécutable lui-même. Tout comme un script Bash démarre par un shebang, un binaire ELF indique quel fichier charger pour orchestrer son lancement, le plus souvent le fameux ld.so. Et ce dernier n'est pas seulement un rouage invisible du noyau : il s'avère être un programme exécutable à part entière que l'on peut invoquer directement en ligne de commande pour piloter un programme, exactement comme on le ferait avec un interpréteur de script.
L'article explore ensuite les subtilités de la recherche de ces bibliothèques, évoquant les capacités matérielles du processeur avec les hwcaps ou les astucieuses couches de compatibilité pour faire tourner de vieux jeux. De quoi se rappeler que sous la surface de nos interfaces graphiques chatoyantes, le système d'exploitation fonctionne un peu comme une horlogerie suisse géante assemblée par des passionnés obstinés.


