2012-05-01 33 views
1

我有一個STM32,我在RAM上加載ELF文件(使用OpenOCD和JTAG)。到目前爲止,我還沒有真正關注我加載的ELF文件的大小。ELF文件的大小與內存大小

通常情況下,當我編譯一個ELF文件,該文件是爲我的板過大(我的船上有其上的可執行文件可裝載RAM 128KB)鏈接器抱怨(在鏈接腳本我指定的RAM的大小) 。

現在我注意到輸出的ELF文件的大小,我看到它是261KB,但鏈接器沒有投訴!

爲什麼我的ELF文件如此之大,但是我的鏈接器還不錯?主機上的ELF文件是否完全加載在主板上?

回答

4

否 - ELF包含重定位記錄等未加載的內容。它可以也包含調試信息(通常以DWARF格式),只有調試器加載。

您可能想要使用readelf來了解您的ELF文件實際包含的內容。你可能不想一直這樣做,但至少要做幾次才能瞭解到底有什麼可以更好地瞭解你正在處理的事情。

readelf是binutils包的一部分;機會相當不錯,你已經有了一個隨你的其他開發工具一起提供的副本。

如果您想進一步瞭解詳細信息,Google搜索「ELF格式」等應用會顯示大量文章。但請注意,ELF是一個非常平凡的格式。如果您決定要了解所有細節,則需要花費相當多的時間和精力。