programa objeto fuente ejecutable definicion codigo build compilation terminology

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



programa fuente objeto y ejecutable (6)

Siempre uso los términos compilar y compilar de forma intercambiable.

¿Qué significan exactamente estos términos?


A menudo se usan para significar lo mismo. Sin embargo, "compilar" 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
  • prueba automática (unidad y / o integración)
  • generación de instaladores
  • instalación / despliegue
  • 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 usando resultados y artefactos de etapas previas.


De la wikipedia :

En el campo del software de computadora, el término compilació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 el resultado de hacerlo. Uno de los pasos más importantes de una compilación de software es el proceso de compilación en el que 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 de muchos archivos y se puede combinar de diferentes maneras para producir muchas versiones diferentes.


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 de objetos en C), mientras que "construir" se refiere a todo el proceso de compilación, vinculación y cualquier otra cosa hecho de un paquete o proyecto completo.


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

El edificio se puede escuchar como el proceso más general de verificar la fuente, crear una carpeta de destino para los artefactos compilados, verificar dependencias, elegir lo que se debe compilar, ejecutar pruebas automáticas, crear un tar / zip / ditributions, presionar a un ftp , etc ...


Una compilación se puede ver como una secuencia de comandos, que se compone de muchos pasos, el principal de los cuales sería compilar el código. Otros podrían ser

  • ejecutar 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
  • etiquetándolos y desplegándolos / copiándolos a un repositorio

La compilación 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.

Building es la secuencia compuesta de compilación y enlace, posiblemente con otras tareas como la creación del instalador.

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