¿Cuál es la diferencia entre el código de compilación y el código ejecutable?

Respuestas:

159

Compilar es el acto de convertir el código fuente en código objeto.

La vinculación es el acto de combinar código objeto con bibliotecas en un ejecutable sin formato.

La construcción es la secuencia compuesta de compilación y vinculación, posiblemente con otras tareas como la creación del instalador.

Muchos compiladores manejan el paso de vinculación automáticamente después de compilar el código fuente.

Ignacio Vázquez-Abrams
fuente
19

De wikipedia :

En el campo del software de computadora, el término construcción de software se refiere al proceso de convertir archivos de código fuente en artefactos de software independientes que se pueden ejecutar en una computadora, o al resultado de hacerlo. Uno de los pasos más importantes de la construcción de un software es el proceso de compilación donde los archivos de código fuente se convierten en código ejecutable.

Mientras que para los programas simples el proceso consiste en la compilación de un solo archivo, para el software complejo el código fuente puede consistir en muchos archivos y puede combinarse de diferentes formas para producir muchas versiones diferentes.

codaddict
fuente
9

Una compilación podría verse como un script, que consta de muchos pasos, el principal de los cuales sería compilar el código. Otros podrían ser

  • ejecutando pruebas
  • informes (por ejemplo, cobertura)
  • análisis estático
  • pasos previos y posteriores a la construcción
  • ejecutar herramientas personalizadas sobre ciertos archivos
  • creando instalaciones
  • etiquetarlos y desplegarlos / copiarlos en un repositorio
Gishu
fuente
7

A menudo se utilizan para significar lo mismo. Sin embargo, "construir" también puede significar el proceso completo de compilar y vincular una aplicación completa (en el caso de, por ejemplo, C y C ++), o incluso más, incluyendo, entre otros

  • embalaje
  • pruebas automáticas (unitarias y / o de integración)
  • generación de instaladores
  • instalación / implementación
  • documentación / generación del sitio
  • generación de informes (por ejemplo, resultados de pruebas, cobertura).

Existen sistemas como Maven , que generalizan esto con el concepto de ciclo de vida , que consta de varias etapas, produciendo diferentes artefactos, posiblemente utilizando resultados y artefactos de etapas anteriores.

Péter Török
fuente
5

Desde mi experiencia, diría que "compilar" se refiere a la conversión de uno o varios archivos fuente legibles por humanos a código de bytes (archivos objeto en C) mientras que "construir" se refiere a todo el proceso de compilación, vinculación y cualquier otra cosa que sea necesaria. hecho de un paquete o proyecto completo.

chris
fuente
2

La mayoría de la gente probablemente usaría los términos indistintamente. Podrías ver un matiz: la compilación es solo el paso en el que pasas algún archivo fuente a través del compilador (gcc, javac, lo que sea).

La construcción podría ser escuchada como el proceso más general de verificar la fuente, crear una carpeta de destino para los artefactos compilados, verificar las dependencias, elegir lo que se debe compilar, ejecutar pruebas automatizadas, crear un archivo tar / zip / ditributions, presionar a un ftp , etc ...

phtrivier
fuente