Подтвердить что ты не робот

В чем разница между файлами ELF и файлами bin?

Окончательные изображения, созданные компиляторами, содержат файл ELF с файлом bin и расширенным загрузчиком, какая разница между ними, особенно утилита ELF файла.

4b9b3361

Ответ 1

Файл Bin - это чистый двоичный файл без исправлений или перемещений памяти, более вероятно, что он имеет явные инструкции для загрузки по определенному адресу памяти. В то время как....

Файлы ELF являются исполняемым связующим форматом, который состоит из символов и перемещаемой таблицы, т.е. может быть загружен в любую память адрес по ядру и автоматически, все используемые символы настраиваются на смещение от адреса памяти, в который он был загружен. Обычно в файлах ELF есть несколько разделов, таких как "данные", "текст", "bss", чтобы назвать только несколько... он находится в тех разделах, где время выполнения может вычислять, где отрегулировать ссылки памяти символов динамически во время выполнения.

Ответ 2

Файл bin - это только бит и байты, которые входят в ром или конкретный адрес, из которого вы будете запускать программу. Вы можете взять эти данные и загрузить их напрямую, как есть, вам нужно знать, что такое базовый адрес, хотя обычно это не так.

Файл эльфа содержит информацию о бине, но он окружен множеством другой информации, возможной информацией об отладке, символами, может отличать код от данных в двоичном формате. Позволяет использовать более одного фрагмента двоичных данных (когда вы выгружаете один из них в корзину, вы получаете один большой файл bin с данными заполнения, чтобы поместить его в следующий блок). Сообщает вам, сколько бинарных данных у вас есть и сколько данных bss есть, которые хотят быть инициализированными нулями (у gnu есть проблемы с созданием файлов bin правильно).

Формат файла elf является стандартным, рука публикует свои усовершенствования/варианты на стандарте. Я рекомендую всем писать программу анализа эльфа, чтобы понять, что там, не беспокоиться о библиотеке, довольно просто использовать информацию и структуры в спецификации. Помогает преодолевать проблемы gnu в общем создании файлов .bin, а также отлаживать сценарии компоновщика и другие вещи, которые могут помочь испортить вывод вашего бункера или эльфа.

Ответ 3

некоторые ресурсы:

Формат ELF обычно представляет собой результат компиляции по умолчанию.  если вы используете цепочки инструментов GNU, вы можете перевести его в двоичный формат с помощью objcopy, например:

  arm-elf-objcopy -O binary [elf-input-file] [binary-output-file]

или с помощью утилиты fromel (встроенный в большинство IDE, например ADS):

 fromelf -bin -o [binary-output-file] [elf-input-file]