Я ОП. Каждый ответ является частичным ответом. Итак, я комбинирую все остальные ответы с тем, что я узнал, чтобы завершить ответ.
Это используемая терминология " Обычно ".
Файл, который передается в качестве входных данных компоновщику (вывод ассемблера), называется Object File
или Relocatable File
.
Компоновщик создает Image file
, который, в свою очередь, используется как ввод загрузчиком. Теперь Image file
может быть Executable file
или Library file
. Эти «библиотечные файлы» бывают двух видов:
- Статическая библиотека (* .lib файлы для Windows. * .A для Linux)
- Общие / динамические библиотеки:
DLL
(* .dll в Windows) & Shared Object file
(* .so в Linux)
Термин Binary File
/ Binary
может использоваться для обозначения либо ObjectFile, либо ImageFile. Понять в зависимости от контекста. Это очень общий термин.
Загрузчик при загрузке файла изображения в память. Затем он называется Module
(я не уверен насчет парней из Linux, но парни из Windows называют его Module
http://www.gliffy.com/pubdoc/1978433/L.jpg
альтернативный текст http://www.gliffy.com/pubdoc/1978433/L.jpg
Как я уже сказал, это " Обычно " используемая терминология. Не существует строгих определений для терминов «двоичный файл», «файл изображения» или «объектный файл».
В частности, термин «объектный файл» может иногда использоваться для обозначения промежуточного файла, выводимого компилятором для использования компоновщиком, но в другом контексте может означать исполняемый файл.
Особенно на разных платформах они могут использоваться для ссылки на разные или похожие вещи. Даже при обсуждении проблем на одной платформе один писатель может использовать термины несколько иначе, чем другой.
- И ObjectFile, и ImageFile имеют формат PE в Windows и формат ELF в Linux.
- ELF - это не только формат файла изображения, но и формат объектного файла.
- Каждый файл ELF начинается с заголовка ELF. Второе поле заголовка ELF -
e_type
; это поле позволяет нам узнать, является ли файл объектным файлом (иначе говоря, перемещаемым на языке ELF), или изображением (которое может быть как исполняемым, так и общим объектом) или чем-то еще (файлы ядра также являются файлами ELF).
- Я не знаю, есть ли бит в заголовке, который отличает объектный файл от файла изображения. Это нужно проверить.
* * 1068
Я знаю, что ПЭ происходит от КОФ.
Но почему Microsoft
спецификации формата PE назван
Microsoft Portable Executable "и
Общий формат объектного файла
Спецификация ". Они все еще поддерживают
COFF? Если они, то в какой ОС? я думал
ЧП давно полностью заменил COFF.
Что касается "PE" против "COFF", я помню, что Microsoft использует спецификацию "COFF" в качестве отправной точки для спецификации "PE", но расширяет ее для своих нужд. Строго говоря, файл PE не является файлом COFF, но во многих отношениях он очень похож.