Compiler et lier des applications avec les fichiers makefile

Lorsque vous créez une application, vous écrivez votre code dans divers fichiers de code source. Pour une application, vous pouvez avoir beaucoup de différents fichiers de code source. Certains grands projets d'entreprise peuvent avoir des centaines (voire des milliers) de fichiers de code source avec des dizaines de programmeurs travaillant sur les différents fichiers.

Comme vous pouvez l'imaginer, des dizaines de programmeurs forte volonté de travailler ensemble fait pour tout un Adventure- mais en utilisant des outils comme faire, ces programmeurs sont capables de travailler facilement ensemble.

Pour transformer ces fichiers de code source dans une seule application, vous devez compiler et de les relier.

Compilation signifie la transformation de votre code C ++ (ou la langue que vous utilisez) dans une langue lisible par machine appelée assembleur. Le langage assembleur diffère selon les types de processeurs. La plupart d'entre vous la lecture de ce livre sont probablement travaillé sur une version d'un processeur AMD ou Intel, de sorte que les compilateurs C ++ vous utilisez normalement traduire vos applications en code assembleur (aussi appelé code machine) qui est approprié pour le processeur sur votre système.

Vous pouvez également dire au compilateur de cibler un autre processeur dans de nombreux cas. Le compilateur fourre tout ce code assembleur dans un fichier appelé fichier objet et typiquement noms le fichier le même que le fichier original du code source mais avec une .obj ou .o l'extension. Pour chaque fichier de code source, le compilateur fait un seul fichier objet.

Après avoir compilé tous vos fichiers de code source, vous courez le linker. La linker prend les fichiers objets et les combine en un seul fichier que vous pouvez exécuter sur votre ordinateur. Ce fichier unique obtient habituellement une .exe extension, ce qui signifie exedécoupable.

L'origine de ce terme vient de exécution, qui se réfère à l'exécution d'une application et probablement eu quelque chose à voir avec ce que l'utilisateur de la première application informatique voulait faire pour le programmeur après l'utilisation de l'application.

Le lieur peut produire d'autres types de fichiers de sortie. Par exemple, vous pouvez créer un .lib (bibliothèque) ou .dll (Dynamic Link Library, ou DLL). Ces fichiers contiennent du code exécutable, de même que le fichier .exe fait, mais vous ne les exécutent pas en tant que fichiers autonomes - un .exe fichier les charge et utilise le code exécutable qu'elles contiennent normalement.

Le compilateur insère également dans l'objet dépose un grand nombre d'informations en plus du code assembleur. Par exemple, lorsque vous êtes encore dans le processus de développement de votre application, vous pouvez demander au compilateur de mettre des informations de débogage dans le fichier. (Bien que parfois les informations de débogage va dans un fichier- séparée il dépend sur le compilateur.)

Informations de débogage comprend les noms de vos variables et les numéros de ligne du code source. Lorsque vous utilisez un outil de débogage, cet outil connaît votre code en regardant les informations de débogage.

Le compilateur met également des informations sur le code, tels que les noms des éléments qui se produisent dans d'autres fichiers de code source. Par exemple, si vous écrivez du code qui appelle le code dans un autre fichier de code source, le compilateur inclut le nom de ce code dans le fichier objet. De cette façon, le lieur peut relier les deux.

Enfin, un compilateur peut ajouter des ressources à des fichiers objets, tels que des graphiques et des sons que votre application nécessite. Ces ressources apparaissent comme des données que l'application accède à plus tard. Les données apparaissent dans des zones séparées de code exécutable dans le fichier, mais vous ne devez pas vous soucier de l'organisation de fichier objet - le compilateur prend soin de gérer à la fois code et les données pour vous.


» » » » Compiler et lier des applications avec les fichiers makefile