其他分享
首页 > 其他分享> > 为什么可执行和可链接格式(ELF)文件包含部分部分?

为什么可执行和可链接格式(ELF)文件包含部分部分?

作者:互联网

这些天来,我指的是Linux中的文件处理系统调用.

此外,我了解ELF是可执行和可链接的格式,其中包含一些部分.

这些是.bss,.data,.rodata,.text,.comment和未知

我提到了Wikipedia和这个Website去学习

所以我有以下问题

为什么ELF文件使用一组节?

以上各节的任务是什么?

使用这组部分的可行性如何?

解决方法:

ELF文件格式的一个很好的参考是Object Files chapter of the System V ABI.尤其是special sections描述了您可能会遇到的大多数部分的用法.

why ELF file uses set of sections?

对象文件包含许多不同类别的数据,将类似的数据分组为多个部分是有意义的,特别是因为当OS执行ELF文件时,某些部分的内容可以直接读取到进程的映像中.

> .bss包含未初始化的数据,例如int a;在C程序中在全局级别声明.实际上,除了将ELF文件加载到进程中时需要分配的大小之外,它不包含任何内容,因为bss中的所有变量都初始化为0.
> .data包含初始化的数据,例如int a = 1000;在C程序中在全局级别声明.
> .rodata包含只读数据,例如在C中声明为const的字符串文字和全局级别变量.当OS执行ELF文件时,它将将该节加载到只读的内存区域中.
> .text包含可执行指令.当操作系统执行ELF文件时,它将把此部分加载到只读的内存区域中.有时.text和.rodata最终被加载到进程内存的同一区域.
> .comment通常包含用于生成文件的编译器的名称和版本.

并非文档中描述的所有部分都可能出现在所有ELF文件中.特别是,在ELF文件上运行strip命令将删除.symtab和.debug节.

标签:file-handling,c-3,linux,signals,signal-processing
来源: https://codeday.me/bug/20191122/2058754.html