.O

Файл O

Compiled Object File
Задать вопрос
БЫСТРЫЙ ОТВЕТ

Файл .o - это машинный код, который компилятор (gcc, clang) создаёт для одного исходного файла C или C++ перед этапом компоновки. Запустить его напрямую нельзя - компоновщик объединяет несколько файлов .o и библиотек в готовое исполняемое приложение или общую библиотеку. Чтобы изучить его, используйте nm, objdump или readelf в Linux/macOS. В Windows ту же роль выполняют файлы .obj.

Разработчик: Unix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor. Категория: Файлы разработчика Открыть стандартное MIME: application/x-object
ОТКРЫВАЕТСЯ НА Windows macOS Linux
Связанные: .DO · .MD · .HEX · .XSD

На этой странице

Проиндексировано расширений: 19k+
Последняя проверка: Aug 17, 2026

Не знаете, что это за файл?

Перетащите любой файл в наш идентификатор - мы прочитаем первые байты, чтобы определить формат.

Идентифицировать файл

Что такое формат файла O?

Файл .o - это скомпилированный объектный файл - промежуточный бинарный файл, который создаёт компилятор, например GCC или Clang, при переводе одного исходного файла C в машинный код. Выходные данные содержат машинные инструкции, сегменты инициализированных и неинициализированных данных, таблицу символов и записи корректировки адресов, но он ещё не является исполняемым: ссылки на функции и переменные, определённые в других единицах перевода, остаются неразрешёнными плейсхолдерами для компоновщика.

Формат бинарного файла зависит от целевой платформы:

  • В Linux и большинстве систем Unix/BSD файлы .o используют контейнер ELF (Executable and Linkable Format), который определяется по магическим байтам \x7FELF по смещению 0 и значению e_type ET_REL (переносимый, значение 0x0001).
  • В macOS аналогичный формат использует Mach-O, начинающийся с CF FA ED FE (64-битный little-endian).
  • В Windows функционально идентичный файл имеет расширение .obj и использует формат COFF.

После компиляции компоновщик (ld) объединяет один или несколько файлов .o с библиотеками для создания исполняемого файла или общей библиотеки. Несколько файлов .o также можно упаковать в статическую библиотеку с помощью команды ar.

Файлы .o - это временные артефакты сборки, автоматически создаваемые инструментарием, и они не предназначены для открытия конечными пользователями. Разработчики, которым нужно их изучить, могут использовать nm, objdump или readelf для просмотра символов, секций и дизассемблирования.

Безопасность и защита

РИСК: LOW

Файл .o - это данные этапа сборки, а не то, что запускает ОС, поэтому он представляет небольшой прямой риск для конечных пользователей - вы не можете дважды кликнуть и запустить его. Для разработчиков важна доверие к цепочке поставок: компоновка объекта из ненадёжного источника «зашивает» его машинный код прямо в вашу программу, поэтому собирайте только с объектами/библиотеками из надёжных источников. Объекты в вашем собственном дереве сборки можно безопасно удалить; они будут пересозданы при следующей компиляции.

Детали формата

в двух словах
ПОЛНОЕ НАЗВАНИЕCompiled Object Fileтакже известен как object file, object code
РАЗРАБОТЧИКUnix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor.с Object-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
MIME-ТИПapplication/x-object
ТИПСкомпилированный переносимый объектный файл (машинный код + символы, не скомпонован)
СТАНДАРТОткрытый · без роялти
СВЯЗАННЫЕ.do.md.hex.xsd
MAGIC BYTES · СИГНАТУРА ФАЙЛА
СМЕЩЕНИЕ
00010203
HEX
7F454C46
ASCII
·ELF
Расширение .o - это роль, а не единый байтовый формат. В Linux/Unix файл .o - это объект ELF, начинающийся с 7F 45 4C 46 ("\x7FELF") с e_type = ET_REL (0x0001, переносимый). В macOS файл .o - это Mach-O, начинающийся с CF FA ED FE (64-битный LE) или FE ED FA CF (big-endian). Объекты COFF .obj в Windows не имеют фиксированного магического префикса (поле машины, например 64 86 для x86-64, в начале файла). Определяйте по контейнеру объектов платформы, а не по универсальному сигнатуре.

Программы, открывающие файлы O

Windows2 apps
Microsoft Visual Studio Freemium MSVC использует COFF .obj, а не Unix .o. Файл .o для Unix собирается в Windows только через WSL/MinGW с соответствующим инструментарием - это не нативный просмотрщик.
MinGW-w64 / WSL (gcc, binutils) Открытый код Обеспечивает gcc/clang + binutils в Windows, что позволяет компоновать и изучать файлы .o в стиле Unix.
macOS2 apps
Apple Xcode / Clang Бесплатно Clang в Xcode собирает и компонуёт файлы .o в формате Mach-O. Изучайте их с помощью 'nm'/'otool -tv file.o' (установите через 'xcode-select --install').
GCC (Homebrew) Открытый код Альтернативный компилятор для сборки/компоновки файлов .o; на macOS создаёт объекты формата Mach-O.
Linux3 apps
GCC / Clang (linker) Открытый код Файл .o не открывают - его компонуют: команда 'gcc a.o b.o -o app' создаёт исполняемый файл. Для компиляции одного объекта используйте 'gcc -c file.c'.
binutils (nm / objdump / readelf) Открытый код Команда 'nm file.o' выводит список символов; 'objdump -d file.o' выполняет дизассемблирование; 'readelf -a file.o' показывает полную структуру ELF.
Ghidra Открытый код Импортируйте .o для полного дизассемблирования/декомпиляции при обратной разработке скомпилированного кода.

Технические подробности

глубокая спецификация
Формат контейнераELF в Linux/Unix, Mach-O в macOS, COFF в Windows (где файл обычно имеет имя `.obj`)
Кодирование файлаБинарный (не текст, понятный человеку)
Магические байты ELF`7F 45 4C 46` (`\x7FELF`) по смещению 0 - присутствуют во всех объектных файлах на основе ELF
Поле типа объекта ELF`e_type = ET_REL` (0x0001) в заголовке ELF - отличает переносимый объект от исполняемого (`ET_EXEC`) или общей библиотеки (`ET_DYN`)
MIME-тип`application/x-object`; также передаётся как `application/octet-stream` универсальными серверами
Порядок байтовКодируется в байте `EI_DATA` заголовка ELF: little-endian (`ELFDATA2LSB`) на x86/x86-64/ARM, big-endian (`ELFDATA2MSB`) на PowerPC/SPARC
Ключевые секции`.text` (исполняемый код), `.data` (глобальные инициализированные переменные), `.bss` (нуль-инициализированные глобальные переменные), `.rodata` (константы только для чтения)
Таблица символовСекция `.symtab` содержит имя каждого определённого и используемого символа, тип привязки (локальный/глобальный/слабый), тип (функция/объект) и значение
Записи корректировки адресовСекции `.rel.text` / `.rela.text` фиксируют каждый слот адреса, который компоновщик должен исправить при объединении объектных файлов в итоговый бинарный файл
Идентификация архитектурыПоле `e_machine` в заголовке ELF определяет целевую CPU: `EM_X86_64` (0x3E), `EM_AARCH64` (0xB7), `EM_386` (0x03) и др.
Типичный размер файлаОт 1 КБ до нескольких МБ на единицу перевода, в зависимости от сложности исходного кода и уровня оптимизации компилятора
СжатиеОтсутствует - объектные файлы хранятся как необработанные несжатые бинарные данные
Модель компиляции 1:1На каждый исходный файл (единицу перевода) создаётся ровно один файл `.o` (один на файл `.c` или `.cpp`); компоновщик позже объединяет их
Упаковка статической библиотекиНесколько файлов `.o` архивируются в статическую библиотеку `.a` с помощью `ar`, каждый объект сохраняется как именованный член архива
Разрешение символов только на этапе компоновкиВ отличие от общих библиотек `.so` / `.dylib`, все ссылки на символы в файле `.o` разрешаются полностью на этапе компоновки, без динамических зависимостей времени выполнения
Инструменты для изучения`nm` (список символов), `objdump` (дизассемблирование и дамп секций), `readelf` (заголовок ELF и детали секций), `otool` (аналог для Mach-O в macOS)
ВыпущенObject-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
Последняя версияELF format frozen since the 1990s; container evolves with each compiler/ABI
Открыть стандартноеДа · без роялти
Спецификацияrefspecs.linuxfoundation.org

Конвертации O

Вопросы и ответы сообщества

спрошено пользователями
Задать быстрый вопрос
Получите помощь от людей, работающих с файлами O. Будьте конкретны - укажите вашу систему и версию ПО.
Аккаунт не нужен · ответы обычно в течение дня

Вопросов пока нет - станьте первым, кто спросит о файлах O.

Часто задаваемые вопросы

Что такое файл .o?
Скомпилированный объектный файл - машинный код, который создаёт компилятор для одного исходного файла перед компоновкой. Компоновщик объединяет несколько файлов .o (а также библиотек) в готовое исполняемое приложение или библиотеку. В Windows ту же роль выполняет расширение .obj.
Как открыть файл .o?
Открывать его как документ не нужно - он используется компоновщиком во время сборки. Чтобы изучить его, выполните команду 'nm file.o' (символы), 'objdump -d file.o' (дизассемблирование) или 'readelf -a file.o' (детали ELF) в Linux/macOS.
Можно ли удалить файлы .o?
Да - объектные файлы являются промежуточными артефактами сборки. Их удаление (или выполнение команды 'make clean') означает лишь то, что компилятор пересоздаст их при следующей сборке. Не удаляйте их во время сборки.
В чём разница между .o, .a и .so?
.o - это один скомпилированный объект. .a - статическая библиотека - архив файлов .o, копируемых в вашу программу на этапе компоновки. .so - общая библиотека, загружаемая во время выполнения. Все три строятся из одних и тех же объектов.
Равен ли файл .o файлу .obj в Windows?
Та же роль (скомпилированный объект), другой контейнер: Unix .o - это ELF/Mach-O, Windows .obj - это COFF. Они не взаимозаменяемы - перекомпилируйте исходный код для целевой платформы.
Почему при компоновке файлов .o возникает ошибка 'undefined reference'?
Символ (функция/переменная), используемый вашим объектным файлом, не определён ни в одном из файлов .o или библиотек, с которыми вы производите компоновку. Добавьте недостающий объект/библиотеку в команду компоновки или определите символ. Ошибка 'multiple definition' означает обратное - один и тот же символ в двух объектах.

Ссылки

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

Узнать больше

по всей базе данных

Популярные расширения на этой неделе

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)

Похожие расширения

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

Бесплатные инструменты для файлов

Идентификатор файлов и конвертер изображений в браузере - все работает на вашем устройстве.

Открыть инструменты

Обзор расширений файлов A-Z