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

Réponses:

159

La compilation consiste à transformer le code source en code objet.

La liaison consiste à combiner du code objet avec des bibliothèques dans un exécutable brut.

La construction est la séquence composée de la compilation et de la liaison, avec éventuellement d'autres tâches telles que la création de l'installateur.

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

Ignacio Vazquez-Abrams
la source
19

De wikipedia :

Dans le domaine des logiciels informatiques, le terme construction de logiciels fait référence soit au processus de conversion de fichiers de code source en artefacts logiciels autonomes pouvant être exécutés sur un ordinateur, soit au résultat de cette opération. L'une des étapes les plus importantes d'une construction de logiciel est le processus de compilation où les fichiers de code source sont convertis en code exécutable.

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

codaddict
la source
9

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

  • exécution de tests
  • rapports (par exemple, couverture)
  • analyse statique
  • étapes pré et post-build
  • exécution d'outils personnalisés sur certains fichiers
  • création d'installations
  • les étiqueter et les déployer / les copier dans un référentiel
Gishu
la source
7

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 d'installateurs
  • 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, utilisant éventuellement les résultats et les artefacts des étapes précédentes.

Péter Török
la source
5

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

Chris
la source
2

La plupart des gens utiliseraient probablement les termes de manière interchangeable. Vous pourriez voir une nuance: la compilation n'est que l'étape où vous passez un fichier source à travers le compilateur (gcc, javac, peu importe).

La construction pourrait être perçue 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écuter des tests automatisés, de créer un tar / zip / ditributions, de pousser vers un ftp , etc...

phtrivier
la source