Menu Close

C语言的编译链接过程

C语言程序是不能直接放到机器上运行的,它只不过是一个带”.c”后缀的文件(也称为源代码)而已,需要经过一定的处理才能转换成机器上可运行的可执行文件。

这个处理C语言的过程叫做编译和链接。

编译是将基于文本的源代码转换为目标文件的机器语言形式的过程。

链接是组织目标文件、操作系统引导代码和库文件以形成最终可执行代码的过程。

编译和链接的过程如下图所示:

如图所示,整个代码编译过程被分为四个过程:

  • 预处理器
  • 编译
  • 汇编
  • 链接

预处理

在 C 程序编译过程的预处理步骤中,预处理器会进行一些初始处理,解析所有以特殊字符开头的行。例如,您代码中以井号(#)字符开头的所有行都被称为宏或 #define 指令。

编译

编译是将源程序(字符流)读入内存,对其进行词法和语法分析,将高级语言指令转换为等效的汇编代码的过程。编译器程序的任务是执行词法分析和语法分析,确认所有指令都符合语法规则后,将它们翻译成等效的中间代码表示或汇编代码。

汇编

汇编是指将汇编语言代码转换为目标机器指令的过程。对于编译系统处理的每个 C 语言源程序,在此过程后得到相应的目标文件。目标文件包含与源程序等效的目标机器语言代码。目标文件由多个段组成。通常,一个目标文件至少有两个段:代码段和数据段。

链接

链接程序的主要任务是将相关的目标文件连接在一起,即将一个文件中引用的符号与另一个文件中的定义相连接,使得所有这些目标文件成为一个统一的整体,可以被操作系统加载和执行。此步骤通常涉及添加所需的任何库。

READ  C语言结构体变量的赋值和初始化
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in C语言教程

Related Posts