要理解一个程序的执行过程,首先要理解什么是编译器。我们用C语言写的程序,计算机只能识别机器语言(二进制指令),计算机并不能理解。因此,必须 将C语言转换为机器语言。编译器就是用来实现这一功能的。编译器将源代码文件按照一定的对应规则映射程计算机能够识别的二进制指令。
关于源文件、目标文件和可执行文件
源文件:保存源代码的文件(*.c, *.cpp)
目标文件:编译器根据源文件创建的机器语言指令成为目标代码,包含目标代码的磁盘文件即目标文件。
一般为(*.obj)文件,Linux下为(*.o)文件。
编译完源代码后生成的目标文件并不能直接执行。一般我们编写的程序都回引用基本的库函数,因此在运行程序之前还要把库函用定义好的目标代码替换,这个过程称为链接。就是把自己写的源代码的目标文件与库函数的目标文件组合起来,生成最终的可执行文件。链接由链接器完成。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/ljinddlj/EntryImages/20080830/build_compile633557269407333750.gif)