.O

Arquivo O

Compiled Object File
Fazer uma pergunta
RESPOSTA RÁPIDA

Um arquivo .o é a saída de código de máquina que um compilador (gcc, clang) produz para um arquivo-fonte C ou C++ antes da vinculação (linking). Você não pode executá-lo diretamente - o vinculador combina vários arquivos .o e bibliotecas em um executável final ou biblioteca compartilhada. Para inspecionar um, use nm, objdump ou readelf no Linux/macOS. No Windows, a mesma função é desempenhada por arquivos .obj.

Desenvolvedor: Unix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor. Categoria: Arquivos de Desenvolvedor Padrão aberto MIME: application/x-object
ABRE EM Windows macOS Linux
Relacionado: .DO · .MD · .HEX · .XSD

Nesta página

19k+ extensões indexadas
Última revisão em Aug 17, 2026

Não tem certeza do que é seu arquivo?

Arraste qualquer arquivo para o nosso identificador - lemos apenas os primeiros bytes para nomear o formato.

Identificar um arquivo

O que é o formato de ficheiro O?

Um arquivo .o é um arquivo de objeto compilado - um binário intermediário produzido por um compilador como GCC ou Clang quando ele traduz um único arquivo-fonte C em código de máquina. A saída contém instruções de máquina, segmentos de dados inicializados e não inicializados, uma tabela de símbolos e entradas de realocação, mas ainda não é executável: referências a funções e variáveis definidas em outras unidades de tradução são deixadas como marcadores não resolvidos para o vinculador.

O formato binário depende da plataforma de destino:

  • No Linux e na maioria dos sistemas Unix/BSD, os arquivos .o usam o contêiner ELF (Executable and Linkable Format), reconhecido pelos magic bytes \x7FELF no deslocamento de byte 0 e um e_type de ET_REL (relocável, valor 0x0001).
  • No macOS, o equivalente usa o formato Mach-O, começando com CF FA ED FE (64 bits little-endian).
  • No Windows, o arquivo funcionalmente idêntico é nomeado com a extensão .obj e usa o formato COFF.

Após a compilação, o vinculador (ld) combina um ou mais arquivos .o com bibliotecas para produzir um executável ou uma biblioteca compartilhada. Vários arquivos .o também podem ser agrupados em um arquivo estático usando o comando ar.

Arquivos .o são artefatos de compilação temporários gerados automaticamente pela cadeia de ferramentas e não se destinam a ser abertos por usuários finais. Desenvolvedores que precisam inspecioná-los podem usar nm, objdump ou readelf para examinar símbolos, seções e desmontagem (disassembly).

Segurança e proteção

RISCO: LOW

Um .o são dados de tempo de compilação, não algo que o sistema operacional inicia, portanto oferece pouco risco direto aos usuários finais - você não pode clicar duas vezes e executá-lo. Para desenvolvedores, a preocupação é a confiança na cadeia de suprimentos: vincular um objeto de uma fonte não confiável incorpora seu código de máquina diretamente em seu programa, portanto, construa apenas com objetos/bibliotecas de fontes em que você confia. Os objetos em sua própria árvore de compilação são seguros para excluir; eles são regenerados na próxima compilação.

Detalhes do formato

em resumo
NOME COMPLETOCompiled Object Filetambém conhecido como object file, object code
DESENVOLVEDORUnix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor.desde Object-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
TIPO MIMEapplication/x-object
TIPOArquivo de objeto relocável compilado (código de máquina + símbolos, ainda não vinculado)
PADRÃOAberto · livre de royalties
RELACIONADO.do.md.hex.xsd
MAGIC BYTES · ASSINATURA DO ARQUIVO
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
A extensão .o é uma função, não um formato de byte único. No Linux/Unix, um .o é um objeto ELF começando com 7F 45 4C 46 («\x7FELF») com e_type = ET_REL (0x0001, relocável). No macOS, um .o é Mach-O, começando com CF FA ED FE (64 bits LE) ou FE ED FA CF (big-endian). Objetos .obj COFF do Windows não têm magic bytes iniciais fixos (campo de máquina, por exemplo, 64 86 para x86-64, perto do início). Identifique pelo contêiner de objeto da plataforma, não por uma assinatura universal.

Programas que abrem arquivos O

Windows2 apps
Microsoft Visual Studio Freemium O MSVC usa .obj COFF, não .o Unix. Um .o Unix só é compilado no Windows via WSL/MinGW com uma cadeia de ferramentas correspondente - não é um abridor nativo.
MinGW-w64 / WSL (gcc, binutils) Código aberto Fornece gcc/clang + binutils no Windows para que você possa vincular e inspecionar arquivos .o de estilo Unix.
macOS2 apps
Apple Xcode / Clang Gratuito O clang do Xcode constrói e vincula arquivos .o Mach-O. Inspecione com «nm»/«otool -tv arquivo.o» (instale via «xcode-select --install»).
GCC (Homebrew) Código aberto Compilador alternativo para construir/vincular arquivos .o; emite objetos Mach-O no macOS.
Linux3 apps
GCC / Clang (linker) Código aberto Você não abre um .o - você o vincula: «gcc a.o b.o -o app» produz o executável. Compile um único objeto com «gcc -c arquivo.c».
binutils (nm / objdump / readelf) Código aberto «nm arquivo.o» lista símbolos; «objdump -d arquivo.o» desmonta; «readelf -a arquivo.o» mostra a estrutura ELF completa.
Ghidra Código aberto Importe o .o para desmontagem/descompilação completa ao fazer engenharia reversa de código compilado.

Detalhes técnicos

especificação profunda
Formato de contêinerELF no Linux/Unix, Mach-O no macOS, COFF no Windows (onde o arquivo é normalmente nomeado `.obj`)
Codificação de arquivoBinário (não é texto legível por humanos)
Magic bytes ELF`7F 45 4C 46` (`\x7FELF`) no deslocamento de byte 0 - presente em todos os arquivos de objeto baseados em ELF
Campo de tipo de objeto ELF`e_type = ET_REL` (0x0001) no cabeçalho ELF - distingue um objeto relocável de um executável (`ET_EXEC`) ou biblioteca compartilhada (`ET_DYN`)
Tipo MIME`application/x-object`; também transportado como `application/octet-stream` por servidores genéricos
Ordem dos bytesCodificado no byte `EI_DATA` do cabeçalho ELF: little-endian (`ELFDATA2LSB`) em x86/x86-64/ARM, big-endian (`ELFDATA2MSB`) em PowerPC/SPARC
Seções principais`.text` (código executável), `.data` (globais inicializados), `.bss` (globais inicializados com zero), `.rodata` (constantes de apenas leitura)
Tabela de símbolosA seção `.symtab` lista o nome de cada símbolo definido e referenciado, vinculação (local/global/weak), tipo (função/objeto) e valor
Entradas de realocaçãoAs seções `.rel.text` / `.rela.text` registram cada slot de endereço que o vinculador deve corrigir ao mesclar arquivos de objeto em um binário final
Identificação de arquiteturaO campo `e_machine` no cabeçalho ELF identifica o destino da CPU: `EM_X86_64` (0x3E), `EM_AARCH64` (0xB7), `EM_386` (0x03), etc.
Tamanho de arquivo típico1 KB a vários MB por unidade de tradução, dependendo da complexidade do código-fonte e do nível de otimização do compilador
CompressãoNenhuma - arquivos de objeto são armazenados como dados binários brutos não compactados
Modelo de compilação um-para-umExatamente um arquivo `.o` é emitido por unidade de tradução de origem (um por arquivo `.c` ou `.cpp`); o vinculador os mescla posteriormente
Empacotamento de biblioteca estáticaVários arquivos `.o` são arquivados em uma biblioteca estática `.a` usando `ar`, que preserva cada objeto como um membro nomeado
Resolução apenas em tempo de vinculaçãoAo contrário das bibliotecas compartilhadas `.so` / `.dylib`, todas as referências de símbolos em um `.o` são resolvidas inteiramente em tempo de vinculação, não deixando dependências dinâmicas em tempo de execução
Ferramentas de inspeção`nm` (listar símbolos), `objdump` (desmontagem e despejos de seção), `readelf` (detalhes do cabeçalho e seção ELF), `otool` (equivalente Mach-O do macOS)
LançadoObject-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
Versão mais recenteELF format frozen since the 1990s; container evolves with each compiler/ABI
Padrão abertoSim · livre de royalties
Especificaçãorefspecs.linuxfoundation.org

Conversões de O

Perguntas e Respostas da Comunidade

perguntado por usuários
Faça uma pergunta rápida
Obtenha ajuda de pessoas que trabalham com arquivos O. Seja específico - inclua seu sistema e a versão do software.
Não é necessário criar conta · respostas geralmente em um dia

Ainda não há perguntas - seja o primeiro a perguntar sobre arquivos O.

Perguntas frequentes

O que é um arquivo .o?
Um arquivo de objeto compilado - a saída de código de máquina que um compilador produz para um arquivo-fonte antes da vinculação. O vinculador combina vários arquivos .o (além de bibliotecas) em um executável ou biblioteca final. No Windows, a mesma função usa a extensão .obj.
Como abro um arquivo .o?
Você não o abre como um documento - ele é consumido pelo vinculador durante uma compilação. Para inspecioná-lo, execute «nm arquivo.o» (símbolos), «objdump -d arquivo.o» (desmontagem) ou «readelf -a arquivo.o» (detalhes ELF) no Linux/macOS.
Posso excluir arquivos .o?
Sim - arquivos de objeto são artefatos intermediários de compilação. Excluí-los (ou executar «make clean») apenas significa que o compilador os gerará novamente na próxima compilação. Não os exclua no meio de uma compilação.
Qual é a diferença entre .o, .a e .so?
Um .o é um único objeto compilado. Um .a é uma biblioteca estática - um arquivo de arquivos .o copiados para o seu programa no momento da vinculação. Um .so é uma biblioteca compartilhada carregada em tempo de execução. Todos os três são construídos a partir dos mesmos objetos.
Um .o é o mesmo que um .obj do Windows?
Mesma função (um objeto compilado), contêiner diferente: o .o do Unix é ELF/Mach-O, o .obj do Windows é COFF. Eles não são intercambiáveis - recompile o código-fonte para a plataforma de destino.
Por que recebo «undefined reference» ao vincular meus arquivos .o?
Um símbolo (função/variável) que seu objeto usa não está definido em nenhum .o ou biblioteca que você está vinculando. Adicione o objeto/biblioteca ausente ao comando de vinculação ou defina o símbolo. «multiple definition» é o oposto - o mesmo símbolo em dois objetos.

Referências

1GNU Binutils - nm/objdump/readelf documentationwww.gnu.org
2Wikipedia - Object fileen.wikipedia.org

Continue explorando

em todo o banco de dados

Principais extensões desta semana

1.AQQAQQ Instant Messenger File
2.BINCD/DVD Disc Image (BIN/CUE)
3.CRDOWNLOADChrome Partial Download File
4.PARTPartial Download File
5.RPMSGRestricted Permission Message
6.MDMarkdown Document
7.NOMEDIAAndroid No-Media Marker File
8.PRDXSoftMaker Presentations Document
9.PRO6XProPresenter 6 Bundle File
10.SWFSmall Web Format (Shockwave Flash)

Extensões relacionadas

.DOStata Do-File
.MDMarkdown Document
.HEXIntel HEX File
.XSDXML Schema Definition
.MAPSource Map (JavaScript / CSS)
.CONFIGConfiguration File

Ferramentas de arquivo gratuitas

Um identificador de arquivos e conversor de imagens no navegador - tudo funciona no seu dispositivo.

Abrir a caixa de ferramentas

Navegar por extensões de arquivo A-Z