Skip to main content

O que é um arquivo de objeto?

Um arquivo de objeto é um arquivo de computador gerado por um programa chamado compilador e contém dados e instruções. Os compiladores convertem o código fonte da linguagem de programação em um formato intermediário legível por máquina conhecido como código de objeto. Programas menores podem ser compilados em um único arquivo de objeto, enquanto programas maiores geralmente são compilados em vários arquivos de função relacionada. Esses arquivos de objetos individuais são unidos por um vinculador e informações específicas do sistema operacional são adicionadas para formar um programa executável.

Na prática comum, um arquivo de objeto é indicado por uma extensão de arquivo ".obj". Existem vários formatos diferentes para esses arquivos, no entanto. Os mais comuns são o OMF (Intel Relocatable Object Module Format) eo COFF (Common Object File Format) do Windows® e UNIX® System V. Em muitos sistemas INIX®, o Executable and Linkable Format (ELF) chegou ao substituir COFF.

Independentemente do formato, um arquivo de objeto normalmente contém três tipos de informações que permitem interagir com outros módulos do programa. Procedimentos e dados abertos à referência externa recebem nomes pelos quais podem ser chamados de outros módulos. Da mesma forma, as referências a informações fora do módulo são anotadas, mas não recebem um nome. Quando os arquivos são vinculados, as referências sem nome receberão o nome dado no módulo em que foram originalmente definidas. Os nomes locais são usados ​​para obter instruções e dados mencionados somente dentro de um módulo.

Nem todo código vinculável é armazenado como arquivos de objeto. Bibliotecas são coleções de rotinas pré-compiladas que são armazenadas como código de objeto. Eles são produzidos da mesma maneira que os arquivos de objetos e são úteis para armazenar procedimentos chamados frequentemente. Quando um vinculador não encontra uma referência em outros arquivos de objeto, ele automaticamente a procura em um arquivo de biblioteca. A maioria das implementações de uma linguagem de programação vem com uma biblioteca padrão de funções.

Por meio da vinculação dinâmica, um arquivo de objeto pode ser usado simultaneamente por vários programas em execução. Em vez de vincular o código do objeto a um programa quando vinculado, ele é recuperado quando o programa é carregado ou em tempo de execução quando um procedimento é referenciado. No ambiente Windows®, elas são conhecidas como bibliotecas de vínculo dinâmico e são indicadas por uma extensão ".dll". Sistemas semelhantes ao Unix geralmente denominam esse tipo de arquivo de objeto compartilhado dinâmico (DSO). Esse tipo de arquivo de objeto também pode ser implementado para uso com um programa específico e faria parte da instalação desse programa.