Quelle est la différence entre l’éditeur de liens dynamic et le chargeur dynamic?

Je sais ce qu’un chargeur dynamic fait. Il charge les programmes au fur et à mesure de la demande de l’application au moment de l’exécution, minimisant ainsi l’empreinte mémoire. Mais je ne comprends vraiment pas ce qu’est cet éditeur de liens dynamic? Et quels sont ses avantages? Je lis beaucoup de choses en ligne mais ils parlent en termes abstraits.

Quelqu’un peut-il m’expliquer avec des exemples simples?

Ce sont vraiment deux termes pour la même chose.

Dans le monde Unix, le terme éditeur de liens dynamic est utilisé pour désigner le composant du système d’exploitation qui lie les bibliothèques dynamics au moment de l’exécution, tandis qu’un chargeur sur la plupart des autres systèmes charge à la fois les bibliothèques dynamics.

Comme le chargement des bibliothèques sous des systèmes de type Unix est effectué par un composant distinct ( ld.so plus souvent), un éditeur de liens dynamic est considéré comme quelque chose de distinct du chargeur de programmes. Les compilateurs insèrent généralement un code de remplacement au début de l’exécutable pour charger ld.so et ld.so continuerait à charger le rest des bibliothèques dépendantes avant que main soit invoquée. Bien que le chargement du programme se fasse dans un espace kernel, la liaison des bibliothèques dynamics se fait généralement dans l’espace utilisateur.

Ceci est différent de Windows, où le chargement du programme et la liaison des bibliothèques dynamics se font en mode kernel.