Qual é a diferença entre o arquivo de objeto e o arquivo executável

Índice:

Anonim

o principal diferença entre o arquivo objeto e o arquivo executável é que um arquivo de objeto é um arquivo gerado após compilar o código-fonte, enquanto um arquivo executável é um arquivo gerado após vincular um conjunto de arquivos de objeto usando um vinculador.

C é uma linguagem de programação de alto nível de uso geral. Além disso, é uma linguagem de programação estruturada que ajuda a escrever programas eficientes. Sistemas operacionais, compiladores de linguagem, editores de texto, drivers de rede, bancos de dados são algumas aplicações da linguagem de programação C. Arquivo de objeto e Arquivo executável são dois arquivos relacionados à programação C.

Linguagem C, Arquivo Executável, Arquivo Objeto

O que é arquivo de objeto

Em primeiro lugar, o programa C é um conjunto de instruções escritas na linguagem de programação C para realizar uma tarefa específica. Este programa é chamado de código-fonte. O programador pode ler e entender o código-fonte, mas a CPU não o entende. Portanto, é necessário converter o código-fonte em um formato compreensível por máquina. Um código-objeto é gerado após compilar o código-fonte.

Figura 1: Código Fonte

Arquivo de objeto é outro nome para código de objeto. O arquivo objeto possui a extensão.obj no ambiente Windows. Além disso, o arquivo objeto tem o. o extensão de arquivo em ambiente Linux. No entanto, a CPU não pode executar diretamente o arquivo objeto.

O que é arquivo executável

Depois de escrever o programa C, se houver algum erro de sintaxe, o programador deve editá-lo. No entanto, se não houver erros de sintaxe, o compilador converte o código-fonte em um arquivo-objeto. Em seguida, o vinculador executa o processo de vinculação. Ele pega um ou mais arquivos-objeto gerados pelo compilador e os combina em um único arquivo executável. Além disso, ele vincula os outros arquivos de programa e funções que o programa requer. Por exemplo, se o programa tiver a função “exp ()”, o Linker vincula o programa à biblioteca matemática do sistema.

Figura 2: Criando um arquivo executável

O programador não entende as instruções do arquivo executável, mas a CPU pode ler e entender essas instruções. Portanto, a CPU executa diretamente o arquivo executável para realizar as tarefas definidas no programa.

Relação entre o arquivo de objeto e o arquivo executável

Diferença entre arquivo de objeto e arquivo executável

Definição

Um arquivo de objeto é um arquivo que contém um código de objeto que possui um código de máquina de formato relocável que não pode ser executado diretamente. Um arquivo executável é um arquivo que pode ser executado diretamente pelo computador e é capaz de realizar as tarefas indicadas de acordo com as instruções codificadas. Conseqüentemente, isso explica a principal diferença entre arquivo-objeto e arquivo executável.

Modelo

Outra diferença entre o arquivo objeto e o arquivo executável é que um arquivo objeto é um arquivo intermediário, mas um arquivo executável é um arquivo final.

Funcionalidade

Execução direta por CPU

Além disso, a CPU não pode executar diretamente o arquivo objeto enquanto a CPU pode executar diretamente um arquivo executável. Portanto, esta é a principal diferença entre o arquivo objeto e o arquivo executável.

Conclusão

Concluindo, Arquivo Objeto e Arquivo Executável são dois arquivos relacionados à programação C. A principal diferença entre o arquivo-objeto e o arquivo executável é que um arquivo-objeto é um arquivo gerado após a compilação do código-fonte, enquanto um arquivo executável é um arquivo gerado após a vinculação de um conjunto de arquivos-objeto usando um vinculador.

Referência:

1. “Linker (Computação).” Wikipedia, Wikimedia Foundation, 6 de outubro de 2018, disponível aqui.

Cortesia de imagem:

1. “Código-fonte em C” de Romainhk - Obra do próprio (imagem e código) (CC BY-SA 3.0) via Commons Wikimedia2. “Etapas de construção da linguagem C” (CC BY-SA 3.0) via Commons Wikimedia

Qual é a diferença entre o arquivo de objeto e o arquivo executável