Файлы S-записи, выводимые objcopy, меньше, чем исходные двоичные файлы.

После использованияarm-none-eabi-gccдля создания файла в формате ELF я используюarm-none-eabi-objcopyдля создания файла S-записи. Команда, которую запускает мой makefile:

$(TOOLCHAIN)-objcopy --srec-len 10 -O srec "$<" "$@"

Makefile может собираться с различными настройками — с символами отладки, с оптимизацией и без них.

После удаления некоторой информации, такой как мое имя пользователя, выводls -laпосле выполнения всех трех сборок:

      -rw-r--r-- 1 4096 270330 Oct 12 18:13 outfile_Debug.mot
-rw-r--r-- 1 4096 825888 Oct 12 18:13 outfile_Debug.out

-rw-r--r-- 1 4096 270334 Oct 12 17:06 outfile_Default.mot
-rw-r--r-- 1 4096 465928 Oct 12 17:06 outfile_Default.out

-rw-r--r-- 1 4096 184776 Oct 12 19:02 outfile_Optimized.mot
-rw-r--r-- 1 4096 395672 Oct 12 19:02 outfile_Optimized.out

Теперь я прочитал утверждение без источника о том, что файлы srec не могут содержать отладочную информацию, что объясняет, почему файлы Default и Debug.motфайлы имеют примерно одинаковый размер, в то время как размеры соответствующих файлов .out сильно различаются. Но в остальном файл ELF представляет собой двоичное представление исполняемого файла, а файл S-записи использует шестнадцатеричные строки в тексте ASCII, так что, конечно, он должен быть больше, чем двоичный файл ELF для сборки без отладки?

0 ответов

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