gpt4 book ai didi

c - ELF中Program header和Section Header的区别

转载 作者:太空狗 更新时间:2023-10-29 16:35:47 26 4
gpt4 key购买 nike

Q1 ELF中Program header和Section Header有什么区别?

Q1.1 segment 和 section 有什么区别?

我相信 pheaders 只指向部分。

Q2。文件头和程序头有什么区别?

根据 GNU ld 链接描述文件,Using Id: The GNU Linker :

PHDRS
{
name type [ FILEHDR ] [ PHDRS ] [ AT ( address ) ]
[ FLAGS ( flags ) ] ;
}

You may use the FILEHDR and PHDRS keywords appear after the program header type to furtherdescribe the contents of the segment. The FILEHDR keyword means that the segment should includethe ELF file header. The PHDRS keyword means that the segment should include the ELF programheaders themselves.

这有点令人困惑。

最佳答案

Executable & Linkable Format wikipage 有一张很好的图片来解释 ELF,以及它的程序头和节头之间的区别。另见 elf(5)

[初始] 程序头定义段(在 address spaceprocess 中运行该 ELF 可执行文件)投影在 virtual memory 中(可执行的观点)在 execve(2)时间。 [final] 部分标题定义部分(可链接的观点,ld(1) 等...)。每个部分都属于一个段(并且在执行时可能可见,也可能不可见 - 即映射到内存中)。 ELF文件头告诉程序头表和节头表在哪里。

也可以使用 objdump(1)readelf(1)探索 Linux 系统上现有的几个 ELF 文件(可执行文件、共享对象、可链接对象)。

莱文的 Linkers & Loaders书中有一章对此进行了详细解释。

还有 Drepper 的论文 How to Write Shared Libraries也有一些很好的解释。

关于c - ELF中Program header和Section Header的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23379880/

26 4 0
文章推荐: Android ArcGIS - 触摸标记时显示弹出窗口
文章推荐: javascript - 在 IE5 中将项目添加到