.O

Archivo O

Compiled Object File
Hacer una pregunta
RESPUESTA RÁPIDA

Un archivo .o es la salida de código máquina que un compilador (gcc, clang) produce para un archivo fuente de C o C++ antes del enlazado. No se puede ejecutar directamente: el enlazador combina varios archivos .o y bibliotecas en un ejecutable final o biblioteca compartida. Para inspeccionar uno, use nm, objdump o readelf en Linux/macOS. En Windows, la misma función la cumplen los archivos .obj.

Desarrollador: Unix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor. Categoría: Archivos de desarrollo Estándar abierto MIME: application/x-object
SE ABRE EN Windows macOS Linux
Relacionado: .DO · .MD · .HEX · .XSD

En esta página

19k+ extensiones indexadas
Última revisión Aug 17, 2026

¿No está seguro de qué es su archivo?

Suelte cualquier archivo en nuestro identificador - leemos solo los primeros bytes para nombrar el formato.

Identificar un archivo

¿Qué es el formato de archivo O?

Un archivo .o es un archivo de objeto compilado: un binario intermedio producido por un compilador como GCC o Clang cuando traduce un único archivo fuente C a código máquina. La salida contiene instrucciones de máquina, segmentos de datos inicializados y no inicializados, una tabla de símbolos y entradas de reubicación, pero aún no es ejecutable: las referencias a funciones y variables definidas en otras unidades de traducción se dejan como marcadores de posición sin resolver para el enlazador.

El formato binario depende de la plataforma de destino:

  • En Linux y la mayoría de los sistemas Unix/BSD, los archivos .o utilizan el contenedor ELF (Executable and Linkable Format), reconocido por los magic bytes \x7FELF en el desplazamiento de byte 0 y un e_type de ET_REL (reubicable, valor 0x0001).
  • En macOS, el equivalente utiliza el formato Mach-O, que comienza con CF FA ED FE (64 bits little-endian).
  • En Windows, el archivo funcionalmente idéntico se nombra con la extensión .obj y utiliza el formato COFF.

Después de la compilación, el enlazador (ld) combina uno o más archivos .o con bibliotecas para producir un ejecutable o una biblioteca compartida. También se pueden agrupar varios archivos .o en un archivo estático utilizando el comando ar.

Los archivos .o son artefactos de construcción temporales generados automáticamente por la cadena de herramientas y no están destinados a ser abiertos por usuarios finales. Los desarrolladores que necesiten inspeccionarlos pueden usar nm, objdump o readelf para examinar símbolos, secciones y desensamblado.

Seguridad y protección

RIESGO: LOW

Un .o son datos de tiempo de construcción, no algo que el sistema operativo ejecute, por lo que representa poco riesgo directo para los usuarios finales; no se puede hacer doble clic y ejecutarlo. Para los desarrolladores, la preocupación es la confianza en la cadena de suministro: enlazar un objeto de una fuente no confiable integra su código máquina directamente en su programa, por lo que solo debe construir con objetos/bibliotecas de fuentes en las que confíe. Los objetos en su propio árbol de construcción son seguros de eliminar; se regeneran en la siguiente compilación.

Detalles del formato

en pocas palabras
NOMBRE COMPLETOCompiled Object Filetambién conocido como object file, object code
DESARROLLADORUnix 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
TIPOArchivo de objeto reubicable compilado (código máquina + símbolos, aún no enlazado)
ESTÁNDARAbierto · libre de regalías
RELACIONADO.do.md.hex.xsd
MAGIC BYTES · FIRMA DE ARCHIVO
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
La extensión .o es una función, no un formato de byte único. En Linux/Unix, un .o es un objeto ELF que comienza con 7F 45 4C 46 («\x7FELF») con e_type = ET_REL (0x0001, reubicable). En macOS, un .o es Mach-O, comenzando con CF FA ED FE (64 bits LE) o FE ED FA CF (big-endian). Los objetos COFF .obj de Windows no tienen un magic inicial fijo (campo de máquina, por ejemplo, 64 86 para x86-64, cerca del inicio). Identifíquelo por el contenedor de objetos de la plataforma, no por una firma universal única.

Programas que abren archivos O

Windows2 apps
Microsoft Visual Studio Freemium MSVC utiliza COFF .obj, no .o de Unix. Un .o de Unix solo se construye en Windows a través de WSL/MinGW con una cadena de herramientas compatible; no es un programa de apertura nativo.
MinGW-w64 / WSL (gcc, binutils) Código abierto Proporciona gcc/clang + binutils en Windows para que pueda enlazar e inspeccionar archivos .o de estilo Unix.
macOS2 apps
Apple Xcode / Clang Gratis El clang de Xcode construye y enlaza archivos .o de Mach-O. Inspeccione con «nm»/«otool -tv archivo.o» (instalar mediante «xcode-select --install»).
GCC (Homebrew) Código abierto Compilador alternativo para construir/enlazar archivos .o; emite objetos Mach-O en macOS.
Linux3 apps
GCC / Clang (linker) Código abierto No se abre un .o, se enlaza: «gcc a.o b.o -o app» produce el ejecutable. Compile un solo objeto con «gcc -c archivo.c».
binutils (nm / objdump / readelf) Código abierto «nm archivo.o» enumera los símbolos; «objdump -d archivo.o» desensambla; «readelf -a archivo.o» muestra la estructura ELF completa.
Ghidra Código abierto Importe el .o para un desensamblado/descompilación completo al realizar ingeniería inversa de código compilado.

Detalles técnicos

especificación profunda
Formato de contenedorELF en Linux/Unix, Mach-O en macOS, COFF en Windows (donde el archivo suele llamarse `.obj`)
Codificación de archivoBinario (no es texto legible por humanos)
Magic bytes ELF`7F 45 4C 46` (`\x7FELF`) en el desplazamiento de byte 0 - presente en todos los archivos de objeto basados en ELF
Campo de tipo de objeto ELF`e_type = ET_REL` (0x0001) en la cabecera ELF - distingue un objeto reubicable de un ejecutable (`ET_EXEC`) o biblioteca compartida (`ET_DYN`)
Tipo MIME`application/x-object`; también se transporta como `application/octet-stream` por servidores genéricos
Orden de bytes (Endianness)Codificado en el byte `EI_DATA` de la cabecera ELF: little-endian (`ELFDATA2LSB`) en x86/x86-64/ARM, big-endian (`ELFDATA2MSB`) en PowerPC/SPARC
Secciones clave`.text` (código ejecutable), `.data` (globales inicializadas), `.bss` (globales inicializadas a cero), `.rodata` (constantes de solo lectura)
Tabla de símbolosLa sección `.symtab` enumera el nombre de cada símbolo definido y referenciado, su vinculación (local/global/débil), tipo (función/objeto) y valor
Entradas de reubicaciónLas secciones `.rel.text` / `.rela.text` registran cada ranura de dirección que el enlazador debe parchear al fusionar archivos de objeto en un binario final
Identificación de arquitecturaEl campo `e_machine` en la cabecera ELF identifica el objetivo de CPU: `EM_X86_64` (0x3E), `EM_AARCH64` (0xB7), `EM_386` (0x03), etc.
Tamaño de archivo típicoDe 1 KB a varios MB por unidad de traducción, dependiendo de la complejidad del código fuente y el nivel de optimización del compilador
CompresiónNinguna - los archivos de objeto se almacenan como datos binarios brutos sin comprimir
Modelo de compilación uno a unoSe emite exactamente un archivo `.o` por unidad de traducción de código fuente (uno por cada archivo `.c` o `.cpp`); el enlazador los fusiona posteriormente
Empaquetado de biblioteca estáticaMúltiples archivos `.o` se archivan en una biblioteca estática `.a` usando `ar`, que conserva cada objeto como un miembro con nombre
Resolución solo en tiempo de enlaceA diferencia de las bibliotecas compartidas `.so` / `.dylib`, todas las referencias a símbolos en un `.o` se resuelven por completo en el momento del enlazado, sin dejar dependencias dinámicas en tiempo de ejecución
Herramientas de inspección`nm` (listar símbolos), `objdump` (desensamblado y volcado de secciones), `readelf` (detalles de cabecera y secciones ELF), `otool` (equivalente de Mach-O en macOS)
LanzadoObject-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
Última versiónELF format frozen since the 1990s; container evolves with each compiler/ABI
Estándar abierto · libre de regalías
Especificaciónrefspecs.linuxfoundation.org

Conversiones de O

Preguntas y respuestas de la comunidad

preguntado por usuarios
Hacer una pregunta rápida
Obtenga ayuda de personas que trabajan con archivos O. Sea específico: incluya su sistema y la versión del software.
No se necesita cuenta · respuestas generalmente en un día

Aún no hay preguntas; sea el primero en preguntar sobre los archivos O.

Preguntas frecuentes

¿Qué es un archivo .o?
Un archivo de objeto compilado: la salida de código máquina que un compilador produce para un archivo fuente antes del enlazado. El enlazador combina varios archivos .o (más bibliotecas) en un ejecutable o biblioteca terminada. En Windows, la misma función utiliza la extensión .obj.
¿Cómo abro un archivo .o?
No se abre como un documento; es consumido por el enlazador durante la construcción. Para inspeccionarlo, ejecute «nm archivo.o» (símbolos), «objdump -d archivo.o» (desensamblado) o «readelf -a archivo.o» (detalles ELF) en Linux/macOS.
¿Puedo eliminar los archivos .o?
Sí, los archivos de objeto son artefactos de construcción intermedios. Eliminarlos (o ejecutar «make clean») simplemente significa que el compilador los regenerará en la próxima construcción. No los elimine a mitad de una compilación.
¿Cuál es la diferencia entre .o, .a y .so?
Un .o es un único objeto compilado. Un .a es una biblioteca estática: un archivo de objetos .o que se copian en su programa en el momento del enlazado. Un .so es una biblioteca compartida que se carga en tiempo de ejecución. Los tres se construyen a partir de los mismos objetos.
¿Es un .o lo mismo que un .obj de Windows?
Cumplen la misma función (un objeto compilado), pero tienen contenedores diferentes: el .o de Unix es ELF/Mach-O, el .obj de Windows es COFF. No son intercambiables; debe recompilar el código fuente para la plataforma de destino.
¿Por qué obtengo «undefined reference» al enlazar mis archivos .o?
Un símbolo (función/variable) que su objeto utiliza no está definido en ningún .o o biblioteca que esté enlazando. Añada el objeto/biblioteca faltante al comando de enlace o defina el símbolo. «multiple definition» es lo opuesto: el mismo símbolo en dos objetos.

Referencias

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

Siga explorando

en toda la base de datos

Extensiones principales esta 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)

Extensiones relacionadas

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

Herramientas de archivo gratuitas

Un identificador de archivos y convertidor de imágenes en el navegador - todo se ejecuta en su dispositivo.

Abrir la caja de herramientas

Explorar extensiones de archivo A-Z