因为接下来要介绍llvm相关知识,作为一个通用编译器,除了要了解编译原理、汇编等专业知识之外,还需要了解像PE文件结构,ELF文件结构等。上述知识我会在后续的章节之中简单介绍,同时在文章最后给大家分享一些相关书籍。
本章我主要介绍ELF文件格式的相关知识,不过本文不是要将所有知识全部讲清楚,更多的一些学习方法和心得,以帮助那些对编译、操作系统等知识感兴趣的同学学习。
一 什么是ELF文件
ELF文件是一种二进制文件,类似于windows下的exe文件,是unix系统家族中的可执行文件,符合ELF文件结构的文件,可以被操作系统中的程序加载器根据文件格式加载。包括用于执行的二进制代码、数据的存储。
可以说ELF文件是UNIX操作系统家族中的应用程序的接口文件,只要符合接口格式,就可以被操作系统加载。
二 ELF文件格式
前面有提到,编译(链接)就是生成ELF文件格式,ELF文件格式被操作系统加载,在ELF文件格式的标准定义中,为了更好理解LEF文件格式,在程序链接和程序执行的过程中,ELF文件格式被分为两种不同的定义。
ELF文件格式
ELF文件头在ELF文件最开始的位置,是对后续文件信息的描述;程序头列表是用于构建进程映像的相关信息;程序节(section)是程序的代码、数据、重定位信息、符号信息等;程序节头列表则是对程序节的描述信息。这些信息