深入理解Android:Java虚拟机ART
上QQ阅读APP看书,第一时间看更新

4.2.5 ELF总结

到此,本章关于ELF的讲解就告一段落。回顾学习历程,总结相关心得如下。

·ELF本身的格式解析还是比较简单的,只要老老实实按照规范里定义的数据结构来解析它即可。笔者自己用Java写过类似readelf这样的ELF文件格式解析程序,难度不大。

·关于ELF文件使用的知识则难度较大。比如ELF文件的加载、符号的计算等。因为它需要对ELF文件各相关section的内容和作用有非常充分的了解。不仅如此,它还需对目标平台的处理方式也非常清楚。本文是以x86平台为实例,如果以ARM平台为目标的话,还需要研究ARM平台上ELF文件的不同之处,也就是研究ps ELF和ABI文档。好在它们的实现原理大多类似。毕竟,ELF文档最开始只有x86平台的,后续新出的平台参考和吸收了x86平台上一些通用做法。相信读者可以触类旁通,举一反三。

最后,笔者希望读者:

·阅读参考资料[4],进一步加深对ELF动态库加载的理解。

·自己能实际动手操作几次。比如,利用gdb测试LD_BIND_NOW这样的环境变量对符号计算的影响。