C 语言学习笔记第三部分:系统.pdf

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C 语言学习笔记第三部分:系统.pdf

C 语⾔学习笔记第三部分:系统 第三部分: 系统 1. ELF File Format Executable and Linking Format ,缩写 ELF 。是 Linux 系统⽬标⽂件 (Object File) 格式。 主要有如下三种类型: (1) 可重定位⽂件 (relocatable file) ,可与其它⽬标⽂件⼀ 创建可执⾏⽂件或共享⽬标 ⽂件。 $ gcc -g -c hello.c $ file hello.o hello.o: ELF 32-bit LSB relocatable, Intel 80386, ver ion 1 (SYSV (2) 可执⾏⽂件 (executable file) 。 $ gcc -g hello.c -o hello $ file hello hello: ELF 32-bit LSB executable, Intel 80386, ver ion 1 (SYSV), lib ), for GNU/Linux 2.6.15, not tripped (3) 共享⽬标⽂件 (shared object file) ,通常是 函数库 ,可静态链接到其他 ELF ⽂件 中,或动态链接共同创建进程映像 (类似 LL) 。 $ gcc - hared -fpic tack.c -o hello. o $ file hello. o hello. o: ELF 32-bit LSB hared object, Intel 80386, ver ion 1 (S tripped 1.1 基本结构 我们可以从⽂件 (Linking) 和执⾏ (Execution) 两个⾓度审视 ELF 结构 (/usr/include/elf .h) 。 和 Windows COFF 格式类似,ELF 也有⼀个特定的⽂件头,包括⼀个特定的标志串 (Magic) 。 ⽂件头中描述了 ELF ⽂件版本 (Version) ,⽬标机器型号 (Machine) ,程序⼊⼜地址 (Entry point Address) 等信息。紧接其后的是可选的程序头表 (Program Header Table) 和 多个段(Section) ,其中有我们所熟悉的存储了执⾏代码的 .text 段。 ELF 使⽤段表 (Section Header Table) 存储各段的相关信息,包括名称、 始位置、长 度、权限属性等等。除了段表,ELF 中还有符号表 (Symbol Table)、字符串表 (String Table ,段、函数等名称) 等。 Section 和 Segment 中⽂翻译虽然都是 段 ,但它们并不是⼀个意思。Section 主要是 ⾯向⽬标⽂件连接器,⽽ Segment 则是⾯向执⾏加载器,后者描述的是内存布局结 构。本⽂主要分析 ELF 静态⽂件格式,也就是说主要跟 Section 打交道,⽽有关 ELF 进程及内存布局模型将另⽂详述。 相关分析将使⽤下⾯这个例⼦,如⾮说明,所有⽣成⽂件都是32位。 $ cat hello.c #include tdio.h int main(int argc, char* argv[]) { printf(Hello, World!\n); return 0; } $ gcc -g -c hello.c $ gcc -g hello.c -o hello $ l hello.c hello.o hello $ file hello hello: ELF 32-bit LSB executable, Intel 80386, ver ion 1 (SYSV), lib ), for GNU/Linux 2.6.15, not tripped 附: ELF⽂件标准历史 20世纪90年代,⼀些⼚商联合成⽴了⼀个委员会, 草并发布了⼀个 ELF ⽂件格式标 准供公开使⽤,并且希望所有⼈能够遵循这项标准并且从中获益。1993年,委员会发 布了 ELF ⽂件标准。当时参与该委员会的有来⾃于编译器的⼚商,如 Watcom 和 Borland ;来⾃ CPU 的⼚商如 IBM 和 Intel ;来⾃操作系统的⼚商如 IBM 和 Microsoft 。1995年,委员会发布了 ELF 1.2 标准,⾃此委员会完成了⾃⼰的使命,不 久就解散了。所以 ELF 最新版本为1.2 。 1.2 ELF Header

文档评论(0)

zhoujiahao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档