C是一种编译语言。它的源代码可以用程序员选择的任何编辑器以文本文件的形式编写,然后必须编译成机器代码。
C 源文件按照惯例以.c 扩展名命名,我们使用命令“gcc”来编译 C 源文件。(GCC 代表 GNU Compiler Collection,它是由 GNU 项目产生的编译器系统。)
编译四步:预处理、编译、汇编、链接。
接下来介绍下编译中的这四步分别做了什么。
编译四步
1.预处理
预处理是第一步。预处理器通过以下方式遵守以 # 开头的命令(称为指令):
(1) 删除评论
(2) 扩展宏
(3) 扩展包含的文件
如果您包含了诸如#include <stdio.h> 之类的头文件,它将查找stdio.h 文件并将头文件复制到源代码文件中。
预处理器还生成宏代码并将使用#define 定义的符号常量替换为它们的值。
2. 编译
编译是第二步。它获取预处理器的输出并生成汇编语言,一种中间人类可读的语言,特定于目标处理器。
3.汇编
汇编是编译的第三步。汇编器会将汇编代码转换为纯二进制代码或机器代码(零和一)。此代码也称为目标代码。
4.链接
链接是编译的最后一步。链接器将来自多个模块的所有目标代码合并为一个。如果我们使用库中的函数,链接器会将我们的代码与该库函数代码链接。
在静态链接中,链接器将所有使用的库函数复制到可执行文件中。在动态链接中,不会复制代码,只需将库的名称放在二进制文件中即可。
如果对代码进行更改(即对源文件进行任何更改),则需要保存并重新编译。
在某些情况下,C 源文件将无法成功编译。
需要阅读错误消息以获取有关如何修复的线索,修复代码后保存并重新编译。