据我所知,ELF格式命名链接器链接的所有外部符号。我想要做的是加载一个未链接的ELF并将其链接到内存中并动态链接。
有人可以向我解释一些必要的细节,如何关闭链接以及内存中的内容会发生什么变化?
[更新]
为了澄清和捍卫这个问题,我们还要提供更多信息。
请不要告诉我阅读gnu libc的内容。这不是面临的问题。我既不想深入研究这样的格式,也不想弄乱他们的OP代码解析东西。
那么符号表如何在内存中处理并表达?对于知道如何完成的人来说,它应该是一个简单的答案。
答案 0 :(得分:1)
ELF在磁盘上分为几个部分,但在内存中分段。
基本上,加载过程意味着执行段到段映射,然后处理修正。 (包括像GOT这样的全球表格)
通过符号加载是一种不同的加载方式。它可能执行第一个过程,然后在特殊表中搜索符号。
无论如何,获得快速洞察力的最佳免费资源是阅读"连接器和装载机" J. Irvine的免费电子书。