ELF文件格式学习_DanileWood英文电子资料.pdfVIP

  • 9
  • 0
  • 约2.18万字
  • 约 18页
  • 2019-02-01 发布于福建
  • 举报

ELF文件格式学习_DanileWood英文电子资料.pdf

ELF 文件格式学习 Daniel Wood 转载时请注明出处和作者 文章出处: 作者:Daniel Wood 写在前面的话: 在阅读TCP/IP 相关书籍的时候遇到ELF 文件格式(ELF和TCP/IP 无直接关 系),所以查阅了网上很多这方面的资料,现在整理成篇,方便自己以后review。 如果你是 ELF 的高手,那么你可以跳过了,如果你和我一样,对 ELF 文件 格式一窍不通,或者你还未曾听说过这种格式(虽然你在平时工作中已经接触了 很多这种格式的文件),那么你也许可以看看这篇基础的文章。如果你确实无聊 的话,可以动手实践一下。 参考文献: [1] Executable and Linkable Format (ELF).pdf [2] 结合实例解读ELF 文件-阅读笔记bkbll(bkbll@, kbll@) [3] About ELF [4] [5] 自UNIX 系统实验室(USL)开发和发布了Executable and linking Format(ELF)这 样的二进制格式以后,在*nix 系统上ELF 就取代了out 可执行文件格式,成为了主 要的目标文件格式。 注:这里的目标文件是指 (可暂时理解为)gcc 用–c,-o,-shared 所产生的.o,可执行(默 认是a.out),.so 文件。 1. ELF 文件类型 目标文件(也就是ELF 文件)格式主要三种: Page 1 of 18 可重定向文件(Relocatable file ):文件保存着代码和适当的数据,用来和 其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件。由 编译器和汇编器生成,将由链接器处理。 可执行文件(Executable File ):文件保存着一个用来执行的程序;该文件 指出了 exec(BA_OS)如何来创建程序进程映象。所有重定向和符号都解析 完成了,如果存在共享库的链接,那么将在运行时解析。 共享目标文件(Shared object file ):就是所谓的共享库。文件保存着代码和 合适的数据,用来被下面的两个链接器链接。第一个是连接编辑器[请参 看 ld(SD_CMD)] ,可以和其他的可重定向和共享目标文件来创建其他的目 标文件。第二个是动态链接器,联合一个可执行文件和其他的共享目标文 件来创建一个进程映象。包含链接时所需的符号信息和运行时所需的代 码。 下面用实例来了解这三种ELF 文件。 代码hello.c #include stdio.h int main() { printf(Hello World\n); return 0; } 用gcc 编译hello.c 文件 编译环境: $ uname -a Linux ubuntu804 2.6.24-26-generic #1 SMP Tue Dec 1 18:37:31 UTC 2009 i686 GNU/Linux $ gcc --version gcc (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu4) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO Page 2 of 18 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 1)编译重定向文件: $ gcc -c hello.c $file hello.o hello.o: ELF 32-bit LSB relocatable, Intel 80386

文档评论(0)

1亿VIP精品文档

相关文档