Вы можете подумать о файле эльфа, который содержит различную информацию о загрузке &, связывающей программу во время выполнения. Вся информация, предоставляемая в качестве входных (.text, .data, .bss, .rel. * И т. Д.), Хранится в разных разделах эльфийского файла. Этот раздел управляется таблицей заголовка раздела, хранящейся где-то в двоичном формате.
Вы получаете размер содержания разделов по
size sha512sum
, но, если вы хотите, чтобы получить общий размер файла (который включает в себя наряду с содержанием раздела - Эльф-заголовок, таблица программ-заголовок , и раздел заголовок таблица), то вы будете использовать
ls -la sha512sum
Следует отметить, что, когда программа загружена (по любому адресу, а именно базовый адрес), содержимые секций отображаются на различном смещении от базового адреса , Отображение может быть не постоянным, а время выполнения программы может быть больше размера файла. Также обратите внимание, что некоторые разделы (например, .bss, содержащие только нули) даже не хранятся в файле. Программа-загрузчик отображает область памяти и заполняет в ней нули вместо копирования нулей из файла. Это экономит много дискового пространства & уменьшает размер файла (и, следовательно, время загрузки двоичного файла в память).
Таким образом, размер памяти в размере программы может быть больше размера файла.
Тогда вы могли бы рассказать мне, почему разные размеры? – computereasy
Поскольку файл содержит больше, чем просто содержимое разделов. –
Да .. Я имею в виду .. это то, о чем я смущен, кроме разделов, что еще содержит файл ELF? – computereasy