web-dev-qa-db-fra.com

Quelle est la différence entre le code de compilation et le code exécutable?

J'utilise toujours les termes compiler et construire de manière interchangeable.

Que signifient exactement ces termes?

108
Lazer

Compilation est l'acte de transformer le code source en code objet.

Linking est l'acte de combiner du code objet avec des bibliothèques en un exécutable brut.

Building est la séquence composée de la compilation et de la liaison, avec éventuellement d'autres tâches telles que la création du programme d'installation.

De nombreux compilateurs gèrent automatiquement l'étape de liaison après la compilation du code source.

147

De wikipedia :

Dans le domaine des logiciels, le terme build de logiciel fait référence soit au processus de conversion des fichiers de code source en artefact (s) logiciel (s) autonome (s) pouvant être exécuté (s) sur un ordinateur, ou le résultat de le faire. L'une des étapes les plus importantes d'une construction logicielle est le processus de compilation où les fichiers de code source sont convertis en code exécutable.

Alors que pour les programmes simple, le processus consiste en un seul fichier en cours de compilation, pour les logiciels complexes, le code source peut être composé de nombreux fichiers et peut être combiné de différentes manières pour produire de nombreuses versions différentes.

17
codaddict

Une construction pourrait être considérée comme un script, qui comprend de nombreuses étapes - dont la principale serait de compiler le code. D'autres pourraient être

  • exécution de tests
  • rapports (p. ex. couverture)
  • analyse statique
  • étapes avant et après construction
  • exécution d'outils personnalisés sur certains fichiers
  • création d'installations
  • les étiqueter et les déployer/copier dans un référentiel
8
Gishu

Ils sont souvent utilisés pour signifier la même chose. Cependant, "construire" peut également signifier le processus complet de compilation et de liaison d'une application entière (dans le cas par exemple de C et C++), ou même plus, y compris, entre autres

  • emballage
  • tests automatiques (unitaires et/ou d'intégration)
  • génération de l'installateur
  • installation/déploiement
  • documentation/génération de site
  • génération de rapports (par exemple, résultats des tests, couverture).

Il existe des systèmes comme Maven , qui généralisent cela avec le concept de cycle de vie , qui se compose de plusieurs étapes, produisant différents artefacts, en utilisant éventuellement les résultats et les artefacts des étapes précédentes.

7
Péter Török

D'après mon expérience, je dirais que "compiler" se réfère à la conversion d'un ou plusieurs fichiers source lisibles par l'homme en code octet (fichiers objets en C) tandis que "construire" désigne tout le processus de compilation, de liaison et tout ce qui doit être fait d'un package ou d'un projet entier.

5
chris

La plupart des gens utiliseraient probablement les termes de façon interchangeable. Vous pouvez voir une nuance: la compilation n'est que l'étape où vous passez un fichier source via le compilateur (gcc, javac, peu importe).

La construction peut être considérée comme le processus plus général de vérification de la source, de création d'un dossier cible pour les artefacts compilés, de vérification des dépendances, de choix de ce qui doit être compilé, d'exécution de tests automatisés, de création d'un tar/Zip/distributions, de poussée vers un ftp , etc...

2
phtrivier