Я путаю мало в терминологии.
Файл, который дан как вход компоновщику, называют Объектным файлом. Компоновщик производит Файл изображения, который в свою очередь используется в качестве входа загрузчиком.
Я получил это от "MS PE & COFF Specification"
Q1. Файл изображения также упоминается как Binary Image
, Binary File
или просто Binary
.Правильно?
Q2. Так, согласно вышеупомянутой установленной терминологии, PE/ELF/COFF являются форматами Файла изображения и не Объектного файла.правильно? Но в http://www.sco.com/developers/gabi/latest/ch4.intro.html говорится
В этой главе описываются формат объектных файлов, названный ELF (Исполняемый файл и Соединение Формата). Существует три основных типа объектных файлов.
Перемещаемый файл содержит код и данные, подходящие для соединения с другими объектными файлами для создания исполняемого файла или файла общего объекта.
Исполняемый файл содержит программу, подходящую для выполнения; файл указывает, как должностное лицо (BA_OS) создает образ процесса программы.
Файл общего объекта содержит код и данные, подходящие для соединения в двух контекстах. Во-первых, редактор связей [видит, что ld (BA_OS)] обрабатывает файл общего объекта с другими файлами перемещаемого и общего объекта для создания другого объектного файла. Во-вторых, динамический компоновщик комбинирует его с исполняемым файлом и другими общими объектами для создания образа процесса.
противоречиво он говорит, что оба Объектных файла и Файл изображения являются форматами ELF, и Он нисколько не дифференцируется между объектными и файлами изображений, но отсылает их обычно как Объектные файлы. Разве это не неправильно?
Q3. Я знаю, что PE получен из COFF. Но то, почему делает спецификации Microsoft формата PE, называют Microsoft Portable Executable "и Спецификацией Общего формата объектных файлов". Они все еще поддерживают COFF? Если они, в который ОС? Я думал, что PE полностью заменил COFF давно.
Я ОП. Каждый ответ - частичный ответ. Итак, я объединяю все остальные ответы с тем, что я узнал, чтобы закончить ответ.
Это " Обычно " используемая терминология.
Файл, который предоставляется в качестве входных данных для компоновщика (выход ассемблера), называется объектным файлом
или перемещаемым файлом
.
Компоновщик создает файл изображения
, который, в свою очередь, используется загрузчиком в качестве входных данных. Теперь файл изображения
может быть либо исполняемым файлом
, либо файлом библиотеки
. Эти «файлы библиотеки» бывают двух видов:
DLL
(* .dll для Windows ) & Файл общих объектов
(* .so в Linux) Термин Двоичный файл
/ Двоичный
может использоваться для обозначения ObjectFile или Файл изображения. Понять в зависимости от контекста. Это очень общий термин.
Загрузчик при загрузке файла изображения в память. Тогда он называется Module
(я не уверен насчет Linux, но ребята из Windows называют его Module
http://www.gliffy.com/pubdoc/1978433/L.jpg alt text http://www.gliffy.com/pubdoc/1978433/L.jpg
Как я уже сказал, это " Обычно " используемая терминология. Строгих определений для термины «двоичный файл», «файл изображения» или «объектный файл».
В частности, термин «объектный файл» может иногда использоваться для обозначения промежуточного файла, выводимого компилятором для использования компоновщиком, но в другом контексте может означать исполняемый файл.
Особенно на разных платформах они могут использоваться для обозначения разных или похожих вещей.Даже при обсуждении вопросов на единой платформе один автор может использовать термины несколько иначе, чем другой.
e_type
; эти поля позволяют нам узнать, является ли файл объектным (он же перемещаемый на языке ELF), изображением (который может быть исполняемым файлом или общим объектом) или чем-то еще (файлы ядра также являются файлами ELF). Я знаю, что PE является производным от COFF. Но почему спецификации Microsoft формата PE называются Microsoft Portable Executable "и Common Object Формат файла Спецификация ". Они по-прежнему поддерживают COFF? Если они, то в какой ОС? Я думал, что PE давно полностью заменил COFF.
Что касается «PE» против «COFF», я припоминаю, что Microsoft использовала спецификацию «COFF» в качестве отправной точки для спецификации «PE», но расширила ее для своих нужд. Строго говоря, файл «PE» не является файлом «COFF», но во многих отношениях он очень похож.
В отношении Q2 для ELF ELF ELF является не только форматом файла изображения, но также Формат объекта объекта.
Каждый файл ELF начинается с заголовка ELF . Второе поле заголовка эльфа составляет E_TYPE
; Эти поля дают нам знать, является ли файл объектом объектом (aka a a a a a youtable в формате эльфа), изображение (которое может быть либо исполняемым или общим объектом), либо что-то еще (основные файлы также являются эльф файлами).
Нет строгого определения для терминов «двоичный файл», «файл изображения» или «объектный файл».
Особенно термин «объектный файл» иногда может использоваться для обозначения промежуточного вывода файла компилятором для использования линкером, но в другом контексте может означать исполняемый файл.
Особенно на разных платформах они могут быть использованы для обозначения различных или подобных вещей. Даже при обсуждении выпусков на одной платформе один писатель может немного использовать условия, чем другой.
Что касается «CE» против «COFF», моя воспоминания состоит в том, что Microsoft использует спецификацию «COFF» в качестве отправной точки для спецификации «PE», но продлен его для их потребностей. Так строго говоря, файл «PE» не является файлом «COFF», но это очень похоже на много способов.
Это по определению оператора для
на языке C. 6,8,5,3/2 «Оператор для
»:
-121--3266157-Можно опустить как выражение-1, так и выражение-3. Опущенное выражение-2 заменяется на ненулевая постоянная .
Последнюю редакцию, объединенную из багажника в ветвь, можно найти, выполнив эту команду в каталоге рабочей копии:
svn log -v --stop-on-copy
-121--849506- gcc -c создаст файл .o, который является объектным файлом формата elf, в системе Linux. «ELF 32-разрядный LSB с возможностью перемещения, Intel 80386, версия 1 (SYSV)» - это то, как файл .o описывается командой file на моем компьютере.
В качестве отступления, я знаю, что дампы ядра на Solaris (и, полагаю, на других Unix) могут быть в формате ELF.