Qual é a diferença entre código de compilação e código executável?

Respostas:

159

Compilar é o ato de transformar o código-fonte em código-objeto.

Vincular é o ato de combinar código-objeto com bibliotecas em um executável bruto.

A construção é a sequência composta de compilar e vincular, possivelmente com outras tarefas, como a criação do instalador.

Muitos compiladores lidam com a etapa de vinculação automaticamente após compilar o código-fonte.

Ignacio Vazquez-Abrams
fonte
19

Da wikipedia :

No campo de software de computador, o termo construção de software se refere ao processo de conversão de arquivos de código-fonte em artefatos de software autônomos que podem ser executados em um computador ou ao resultado disso. Uma das etapas mais importantes da construção de um software é o processo de compilação , onde os arquivos de código-fonte são convertidos em código executável.

Enquanto para programas simples , o processo consiste em um único arquivo sendo compilado, para software complexo o código-fonte pode consistir em muitos arquivos e pode ser combinado de diferentes maneiras para produzir muitas versões diferentes.

codadicto
fonte
9

Uma construção pode ser vista como um script, que compreende várias etapas - a principal das quais seria compilar o código. Outros poderiam ser

  • executando testes
  • relatórios (por exemplo, cobertura)
  • análise estática
  • etapas pré e pós-construção
  • executando ferramentas personalizadas em certos arquivos
  • criando instalações
  • rotulá-los e implantá-los / copiá-los para um repositório
Gishu
fonte
7

Freqüentemente, eles são usados ​​para significar a mesma coisa. No entanto, "construir" também pode significar o processo completo de compilar e vincular um aplicativo inteiro (no caso de, por exemplo, C e C ++), ou ainda mais, incluindo, entre outros

  • embalagem
  • teste automático (unidade e / ou integração)
  • geração de instalador
  • instalação / implantação
  • documentação / geração de site
  • geração de relatórios (por exemplo, resultados de testes, cobertura).

Existem sistemas como o Maven , que generalizam isso com o conceito de ciclo de vida , que consiste em várias etapas, produzindo diferentes artefatos, possivelmente utilizando resultados e artefatos de etapas anteriores.

Péter Török
fonte
5

De minha experiência, eu diria que "compilar" se refere à conversão de um ou vários arquivos-fonte legíveis por humanos em código de bytes (arquivos objeto em C), enquanto "construir" denomina todo o processo de compilação, vinculação e tudo o mais que precisa ser feito de um pacote ou projeto inteiro.

Chris
fonte
2

A maioria das pessoas provavelmente usaria os termos de maneira intercambiável. Você pode ver uma nuance: compilar é apenas a etapa em que você passa algum arquivo de origem através do compilador (gcc, javac, qualquer que seja).

A construção pode ser ouvida como o processo mais geral de verificar o código-fonte, criar uma pasta de destino para os artefatos compilados, verificar as dependências, escolher o que deve ser compilado, executar testes automatizados, criar um tar / zip / ditributions, enviar para um ftp , etc ...

phtrivier
fonte