linux常用头文件详解(9)

发布时间:2021-06-06

linux常用头文件详解

(1)执行头部分(exec header)。该部分中含有一些参数(exec结构),内核使用这些参数把执行文件加载到内存中并执行,而链接程序(ld)使用这些参数将一些模块文件组合成一个可执行文件。这是目标文件唯一必要的组成部分。

(2)代码段部分(text segment)。含有程序执行时被加载到内存中的指令代码和相关数据。可以以只读形式被加载。

(3)数据段部分(data segment)。这部分含有已经初始化过的数据,总是被加载到可读写的内存中。

(4)代码重定位部分(text relocations)。这部分含有供链接程序使用的记录数据。在组合目标模块文件时用于定位代码段中的指针或地址。

(5)数据重定位部分(data relocations)。类似于代码重定位部分的作用,但是用于数据段中指针的重定位。

(6)符号表部分(symbol table)。这部分同样含有供链接程序使用的记录数据,用于在二进制目标模块文件之间对命名的变量和函数(符号)进行交叉引用。

(7)字符串表部分(string table)。该部分含有与符号名对应的字符串。

每个目标文件均以一个执行数据结构(exec structure)开始。该数据结构的形式如下:

各个字段的功能如下:

1)a_magic——该字段含有三个子字段,分别是标志字段、机器类型标识字段和魔数字段,参见图11-1。不过对于Linux 0.12系统其目标文件只使用了其中的魔数子字段,并使用宏N_MAGIC()来访问,它唯一地确定了二进制执行文件与其他加载的文件之间的区别。该子字段中必须包含以下值之一:

◆OMAGIC。表示代码和数据段紧随在执行头后面并且是连续存放的。内核将代码和数据段都加载到可读写内存中。编译器编译出的目标文件的魔数是OMAGIC(八进制0407)。

◆NMAGIC。同OMAGIC一样,代码和数据段紧随在执行头后面并且是连续存放的。然而内核将代码加载到了只读内存中,并把数据段加载到代码段后下一页可读写内存边界开始。

◆ZMAGIC。内核在必要时从二进制执行文件中加载独立的页面。执行头部、代码段和数据段都被链接程序处理成多个页面大小的块。内核加载的代码页面是只读的,而数据段的页面是可写的。链接生成的可执行文件的魔数即是ZMAGIC(0413,即0x10b)。

2)a_text——该字段含有代码段的长度值,字节数。

linux常用头文件详解(9).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219