编译器生成的最终图像包含bin文件和扩展加载程序格式ELF文件,两者之间的区别是什么?
发布于 2018-05-03 15:41:55
Bin文件是一个没有内存修改或重定位的纯二进制文件,很可能它有明确的指令要加载到特定的内存地址。
ELF文件是可执行的可链接格式,它由一个符号查找表和可重定位表组成,也就是说,它可以由内核加载到任何内存地址,并且自动地将所有使用的符号调整为与该内存地址的偏移量被装入。通常,ELF文件有很多部分,比如'data','text','bss'等等。
发布于 2018-05-03 17:10:35
bin文件只是进入ROM的位和字节,或者将运行程序的特定地址。你可以直接获取这些数据并直接加载它,你需要知道基地址是什么。
一个elf文件包含bin信息,但它被许多其他信息包围,可能的调试信息,符号可以区分二进制文件中的代码和数据。允许多个二进制数据块。告诉你有多少二进制文件,有多少bss数据需要初始化为零。
elf文件格式是一种标准,arm会发布其对标准的增强/变体。我建议每个人都写一个elf解析程序来理解它里面的内容。
https://stackoverflow.com/questions/-100004016
复制相似问题