web-dev-qa-db-fra.com

Quelles sont les différences entre un compilateur et un éditeur de liens?

Quelle est la différence entre un compilateur et un éditeur de liens en C?

38
smruti

Le compilateur convertit le code écrit dans un langage de programmation lisible par l'homme en une représentation de code machine qui est comprise par votre processeur. Cette étape crée des fichiers object.

Une fois cette étape effectuée par le compilateur, une autre étape est nécessaire pour créer un exécutable de travail qui peut être appelé et exécuté, c'est-à-dire associer les appels de fonction (par exemple) que votre code compilé doit appeler pour fonctionner. Par exemple, votre code pourrait appeler sprintf, qui est une routine dans la bibliothèque standard C. Votre code n'a rien qui fait le service réel fourni par sprintf, il signale simplement qu'il doit être appelé, mais le code réel réside quelque part dans la bibliothèque C commune. Pour effectuer ces liaisons (et bien d'autres), le linker doit être appelé. Après la liaison, vous obtenez l'exécutable réel qui peut s'exécuter.

73
Stefano Borini

Un compilateur génère des fichiers de code objet (langage machine) à partir du code source.

Un linker combine ces fichiers de code objet en un exécutable.

De nombreux IDE les invoquent successivement, de sorte que vous ne voyez jamais réellement l'éditeur de liens au travail. Certains langages/compilateurs n'ont pas de lieur distinct et la liaison est effectuée par le compilateur dans le cadre de son travail.

26
Oded