用于理解编译,加载器,链接器和进程结构的资源

时间:2012-03-01 02:55:10

标签: c assembly compiler-construction linker loading

我想了解编译和执行C程序所涉及的整个过程。具体来说,C源文件和头文件如何编译为目标代码并与库链接以生成ELF可执行文件以及如何在内存中加载ELF? 此外,我还想了解内存过程的结构。 (我并没有特别寻找编译器中的步骤,我从编译器书中获得了Aho,Ulman。)

详细了解这一点的最佳资源(在线/书籍)是什么?

2 个答案:

答案 0 :(得分:2)

我最近必须了解所有这些。一本详细描述您所询问的内容的书是: Computer Systems: A Programmer's Perspective。具体来说,第7章讨论了以下主题:

  • 编译驱动程序
  • 静态链接
  • 对象文件
  • 可重定位目标文件
  • 符号和符号表
  • 符号解析
  • 重定位
  • 可执行对象文件
  • 与共享库进行动态链接
  • 从应用程序加载和链接共享库
  • 与位置无关的代码(PIC)
  • 操纵对象文件的工具

答案 1 :(得分:0)

维基百科是一个好的开始。它还有许多链接到其他网站。

http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

当然,规范:http://refspecs.freestandards.org/elf/elf.pdf