为什么可执行和可链接格式(ELF)文件包含部分部分?
作者:互联网
这些天来,我指的是Linux中的文件处理系统调用.
此外,我了解ELF是可执行和可链接的格式,其中包含一些部分.
这些是.bss,.data,.rodata,.text,.comment和未知
所以我有以下问题
为什么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