Alors que les deux sont appelés "éditeur de liens" et sont utilisés pour lier des binaires, je ne peux pas vraiment comprendre comment ils diffèrent les uns des autres. Quelqu'un peut-il me dire ses différences?
Sans devenir trop technique: les deux sont des "linkers", c'est-à-dire un outil qui combine / charge un morceau de code compilé avec / dans un autre morceau de code compilé.
ld
est un éditeur de liens statique, tandis que ld.so
est un éditeur de liens dynamique.
Les lettres so
sont, je crois, l'abréviation de "objet partagé", et vous le verrez généralement comme un suffixe de nom de fichier de bibliothèques partagées, c'est-à-dire des bibliothèques qui peuvent être liées dynamiquement dans des programmes (une bibliothèque est "partagée" entre plusieurs programmes) . En revanche, une bibliothèque statique a souvent le suffixe de nom de fichier .a
, pour "archive" (créé par l' ar
utilitaire).
Un éditeur de liens statique relie un programme ou une bibliothèque au moment de la compilation, généralement comme dernière étape du processus de compilation, créant un exécutable binaire ou une bibliothèque. Dans le cas d'un fichier exécutable binaire, il peut s'agir d'un binaire statique avec toutes les bibliothèques chargées dans le binaire lui-même, ou il peut s'agir d'un binaire lié dynamiquement avec seulement quelques bibliothèques liées statiquement.
Un éditeur de liens dynamique charge les bibliothèques qui étaient liées dynamiquement au moment de la compilation dans l'espace d'adressage du processus au moment de l'exécution.
Consultez les manuels de ld
et ld.so
sur votre système.