2

我有一个 STM32,我将 ELF 文件加载到 RAM 中(使用 OpenOCD 和 JTAG)。到目前为止,我还没有真正关注我加载的 ELF 文件的大小。

通常,当我编译一个对于我的板来说太大的 ELF 文件(我的板有 128KB 的 RAM 可以加载可执行文件)时,链接器会抱怨(在链接器脚本中我指定了 RAM 的大小)。

现在我注意到输出的 ELF 文件的大小,我看到它是 261KB,但链接器并没有抱怨!

为什么我的 ELF 文件这么大,但我的链接器却很好?主机上的 ELF 文件是否完全加载到板上?

4

1 回答 1

5

否 - ELF 包含诸如未加载的重定位记录之类的内容。它还可以包含仅由调试器加载的调试信息(通常为 DWARF 格式)。

您可能希望使用它readelf来了解您的 ELF 文件中实际包含的内容。您可能不想一直这样做,但至少进行几次以了解其中的内容可以更好地了解您正在处理的内容。

readelf是 binutils 包的一部分;很有可能您已经拥有其他开发工具附带的副本。

如果您想了解更多细节,谷歌搜索“ELF 格式”之类的内容应该会找到很多文章。但是请注意,ELF 是一种绝对不平凡的格式。如果您决定要了解所有细节,则需要相当多的时间和精力。

于 2012-05-01T15:28:13.620 回答