Самый простой способ объединить 2 или более файлов ELF

Я работаю над некоторым встроенным кодом для проекта класса, который в настоящее время (согласно требованиям) создает несколько файлов srec и объединяет их. Я хотел бы иметь возможность загрузить этот код в QEMU, но в целом он устраивает только файлы ELF. Какой самый удобный способ объединить оригинальные файлы ELF вместо srecs. Также приемлем, метод преобразования srec обратно в ELF и обеспечения возможности загрузки результирующего файла (кажется, что при этом objcopy создает довольно испорченные файлы (без архитектуры среди других). Инструменты должны быть способны работать с двоичными файлами m68k, но Хост-система обычная x86.

4 ответа

Решение

Я нашел самое простое решение моей первоначальной проблемы - добавить загрузку SREC в qemu. Я уже модифицирую исходный код, чтобы добавить поддержку платы, так что поддержка SREC не так уж много дополнительной работы. Я нашел некоторый код на github от кого-то, кто уже сделал это, и использовал его в качестве основы для моей работы.

https://github.com/MegabytePhreak/qemu-mcf5307/commit/d3bceb911893b37b2524d6e804bac96691d4d33c

Легко... давайте предположим: AC и BC

gcc a.c -c -o a.o
gcc b.c -c -o b.o
ld -r a.o b.oc -o c.o

co теперь содержит как ao, так и bo как перемещаемый файл ELF.

--Ivan

Пожалуйста, посмотрите на библиотеку ELFIO. Он содержит примеры WriteObj и Writer. Используя библиотеку, вы сможете создавать двоичные файлы ELF на разных хост-платформах.

Возможно, вы используете свой компоновщик?

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

Другие вопросы по тегам