Объе́ктный мо́дуль (также — объектный файл, англ. object file) — файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код (часто называемый двоичным или бинарным), который может быть объединён с другими объектными файлами при помощи редактора связей (компоновщика) для получения готового исполнимого модуля либо библиотеки.
Объектные файлы представляют собой блоки машинного кода и данных с неопределенными адресами ссылок на данные и процедуры в других объектных модулях, а также список своих процедур и данных. Компоновщик собирает код и данные каждого объектного модуля в итоговую программу, вычисляет и заполняет адреса перекрестных ссылок между модулями. Связывание со статическими библиотеками выполняется редактором связей или компоновщиком (который может представлять собой отдельную программу или быть частью компилятора), а с операционной системой и динамическими библиотеками связывание выполняется при исполнении программы, после её загрузки в память.
Программист генерирует объектный код с помощью компилятора или ассемблера. Например, в Linux компилятор GNU Compiler Collection будет генерировать файлы с расширением .o, которые используют формат ELF. При компиляции в Windows создаются файлы с расширением .obj, использующие формат COFF. Затем компоновщик используется для объединения объектного кода в одну исполняемую программу или библиотеку, при необходимости извлекая предварительно скомпилированные системные библиотеки.
Существует множество различных форматов объектных файлов; изначально у каждого типа компьютеров был свой уникальный формат, но с появлением Unix и других портативных операционных систем некоторые форматы, такие как ELF и COFF, были определены и использовались в разных типах систем. Один и тот же формат может использоваться как для ввода, так и для вывода компоновщика и, таким образом, в качестве формата библиотеки и исполняемого файла. Некоторые форматы могут содержать машинный код для разных процессоров, при этом правильный вариант выбирается операционной системой при загрузке программы[1].
Lokasi Pengunjung: 3.129.210.137