1. C 语言是高级编程语言
C 语言是高级编程语言,人们在使用 C 语言工作的时候不必用数字码表示指令,大大简化了对于计算机底层寄存器的操作,人们可以把工作的重点放在代码设计和具体功能的实现,编写出更易读易懂的代码。可是计算机的工作和人类正好相反, C 语言编写的代码对于计算机而言就好比是天书且没有意义可言,因为计算机是识别机器语言的,比如 0,1 这样的数字。
因此,如果让 C 语言编写的代码可以顺利的运行,需要有一个工具可以把人类可以读懂的高级编程语言翻译成计算机可以识别的高级语言,这个工具就是编译器。
2. C 语言的编译器
编译器是把源代码转化为可执行代码的程序。可执行代码是用计算机的机器语言表示的代码。典型的 C 实现通过编译和链接这两个步骤来完成的。
在常用的 IDE 中都内置了用于编写 C 语言的编译器,使用户不离开 IDE 就可以快速的开发自己想要的 C 程序。
编译用来将程序的源代码转化成目标代码,可是光有目标代码并不能运行程序,原因有以下两个方面。
其一,因为在每个开发程序中,我们都不可避免会调用一些提供的标准库函数,而目标代码是没有将这些库代码加载进来的;
其二,哪怕已经加载进来了库函数,但是因为每个人所使用的计算机系统并不相同,比如有用 Windows 的,有用 Linux 的,也有用 Mac 的等等,因此我们还必须调用启动代码。
这是就出现了链接器的概念,链接器的作用就是将目标代码、库代码、启动代码结合以来合成一个文件,这个文件就是可执行文件。
有些 IDE 在链接按钮中会自动的调用链接器,而有些 IDE 则是编译和链接分开进行。
最后,放一张 Stephen Prata 先生在《C Primer Plus》一书中给出的图片,让大家可以更好的理解编译器和链接器是如何工作的。