Использование binutils size в объектном файле дает размер, меньший, чем фактический размер объектного файла

#c #compiler-construction

#c #компилятор-построение

Вопрос:

Я работаю над оптимизацией одного объектного файла C с учетом занимаемой площади. Я использую компилятор arm-elf-gcc, поскольку целевая платформа предназначена для процессора ARM-926EJ.

Я хочу задокументировать текущий размер, а затем сравнить после оптимизации, и мне интересно, почему arm-elf-size возвращает размер, который меньше фактического размера объектного файла?

Это то, что я получаю с arm-elf-size

text data bss dec hex filename
15656 29188 0 44844 af2c hyper.o

И фактический размер файла hyper.o составляет 54 168 байт.

На какой из них мне следует обратить внимание?

С наилучшими пожеланиями

Мистер Гигу

Ответ №1:

Объектный файл имеет заголовки, которые не являются частью размеров сегментов, сообщаемых elf-size.

Комментарии:

1. Так что, правильнее смотреть на размер, возвращаемый arm-elf-size?

2. Это зависит от вашей цели. Чтобы узнать, какое место действительно занято в памяти, да (но это также может зависеть от размещения сегментов в памяти). Обратите внимание также, что при наличии неинициализированных данных вы можете оказаться в обратной ситуации (размер сообщает больше, чем размер файла).