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


Siempre uso los términos compile y build indistintamente.

¿Qué significan exactamente estos términos?

Author: Community, 2010-02-22

6 answers

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

Enlazar es el acto de combinar código objeto con bibliotecas en un ejecutable raw.

Construir es la secuencia compuesta de compilar y enlazar, con posiblemente 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.

 130
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-22 10:36:59

De wikipedia:

En el campo del software de computadora, el término software build 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 donde los archivos de código fuente se convierten en código ejecutable.

Mientras que para simple programa el proceso consiste en un único archivo que se compila, para software complejo el código fuente puede consistir en muchos archivos y puede combinarse de diferentes maneras para producir muchas versiones diferentes.

 16
Author: codaddict,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-22 10:35:49

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

  • ejecutando pruebas
  • presentación de informes (por ejemplo, cobertura)
  • análisis estático
  • pasos previos y posteriores a la compilación
  • ejecutar herramientas personalizadas sobre ciertos archivos
  • creando instalaciones
  • etiquetarlos y desplegarlos/copiarlos en un repositorio
 7
Author: Gishu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-22 10:37:21

A menudo se usan para significar lo mismo. Sin embargo, "build" 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 del instalador
  • instalación / despliegue
  • documentación/generación del sitio
  • generación de informes (por ejemplo, resultados de pruebas, cobertura).

Hay sistemas como Maven , que generaliza esto con el concepto de ciclo de vida , que consiste en varias etapas, produciendo diferentes artefactos, posiblemente utilizando resultados y artefactos de etapas anteriores.

 7
Author: Péter Török,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-22 10:42:32

Por 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" denomina todo el proceso de compilar, vincular y cualquier otra cosa que se deba hacer de un paquete o proyecto completo.

 4
Author: chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-22 10:41:09

La mayoría de las personas probablemente usarían los términos indistintamente. Puedes ver un matiz: compilar es solo el paso donde 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 comprobar el origen, crear una carpeta de destino para los artefactos compilados, comprobar dependencias, elegir lo que tiene que ser compilado, ejecutar pruebas automatizadas, crear un tar / zip / ditributions, enviar a un ftp, etc...

 2
Author: phtrivier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-22 10:35:58