Skip to main content

Что такое объектный файл?

Объектный файл - это компьютерный файл, созданный программой, называемой компилятором, и содержащий данные, а также инструкции. Компиляторы переводят исходный код языка программирования в промежуточную машиночитаемую форму, известную как объектный код. Меньшие программы могут быть скомпилированы в один объектный файл, в то время как большие программы, как правило, скомпилированы в несколько файлов связанных функций. Эти отдельные объектные файлы объединяются компоновщиком, и специфическая информация для операционной системы добавляется для формирования исполняемой программы.

В обычной практике объектный файл обозначается расширением «.obj». Однако существует несколько различных форматов для этих файлов. Наиболее распространенными являются формат перемещаемых объектных модулей Intel® (OMF) и общий формат объектных файлов (COFF) для Windows® и UNIX® System V. Во многих системах INIX® формат исполняемых и связываемых файлов (ELF) пришел к заменить COFF.

Независимо от формата объектный файл обычно содержит информацию трех типов, которая позволяет ему взаимодействовать с другими программными модулями. Процедурам и данным, которые открыты для внешних ссылок, присваиваются имена, по которым они могут вызываться из других модулей. Аналогично, ссылки на информацию за пределами модуля отмечаются, но им не присваивается имя. Когда файлы связаны, безымянным ссылкам будет присвоено имя, данное им в модуле, где они были изначально определены. Локальные имена используются для инструкций и данных, относящихся исключительно к модулю.

Не весь связываемый код хранится в виде объектных файлов. Библиотеки - это коллекции предварительно скомпилированных подпрограмм, которые хранятся в виде объектного кода. Они создаются во многом так же, как объектные файлы и полезны для хранения часто вызываемых процедур. Когда компоновщик не находит ссылку в других объектных файлах, он автоматически ищет ее в файле библиотеки. Большинство реализаций языка программирования поставляются со стандартной библиотекой функций.

С помощью динамического связывания объектный файл может одновременно использоваться несколькими исполняемыми программами. Вместо привязки объектного кода к программе, когда она связана, она извлекается при загрузке программы или во время выполнения при обращении к процедуре. В среде Windows® они называются библиотеками динамических ссылок и обозначаются расширением «.dll». Системы, подобные Unix®, часто называют этот тип файла динамическим общим объектом (DSO). Этот тип объектного файла также может быть реализован для использования с конкретной программой и будет частью установки этой программы.