Файлы 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 для сборки без отладки?