2016-11-11 3 views

ответ

1

Материал из Википедии:

ELF является общим стандартным форматом файла для исполняемых файлов, объектного кода, разделяемых библиотек, и дампы.

Независимо от того, используете ли вы родной или кросс-компилятор, не имеет никакого отношения к тому, как генерируется файл эльфа. Кросс-компилятор просто учитывает, что вы компилируете для другой платформы HW, чем тот, который вы сейчас используете для компиляции.

2

Задача компилятора состоит в том, чтобы преобразовать идеально от более высокого к нижнему. От C до языка ассемблера от JAVA до байт-кода и т. Д. Файл в, файл выходит. Обычно люди не видят, что компилятор обычно (но не жесткий и быстрый) не выпускает язык ассемблера (текст), который затем подается на ассемблер. THEN становится эльфом или коффом или что-то еще. Не имеет значения, что вам нужен формат файла для хранения информации, когда информация становится двоичной (машинный код), вам нужен какой-то формат файла, ЛЮБОЙ формат файла. Авторы/дизайнеры компилятора выбирают, какой формат файла (ов) они хотят поддержать, эльф достаточно общий и работает хорошо, поэтому не плохой выбор.

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

Возможно, что инструментальная цепочка предпочитает иметь другой формат файла по умолчанию в зависимости от комбинации цели или платформы, например, gnu, используемый в Windows, может создавать файлы .EXE, те же источники gnu могут выбрать эльф как файл по умолчанию формат при компиляции как компилятор Linux. И естественным дополнением к этому является то, что инструменты gnu могут иметь другой формат файла по умолчанию, который они используют для других комбинаций целевого процессора и/или платформы.

Elf, в частности, является немного общим, некоторые маркеры и функции могут использоваться комбинациями целевого процессора и платформы, поэтому вы можете видеть различные ароматы эльфа. Просто посмотрите на использование objcopy в формате hex hex, выход изменится в зависимости от типа целевого процессора.

+0

спасибо, что очень ... – sivaraj

Смежные вопросы