下面这段个人是很想精简的,但是,思虑再三,感觉没办法精简,照抄原文了。
hello程序的生命周期是从一个高级C语言程序开始的,因为便于人类阅读。但,为了在系统上运行hello.c程序,每条C语句都必须被其他程序转化成为一系列的低级机器语言指令。然后,这些指令按照一种称为 可执行目标程序 的格式打好包,并以二进制磁盘文件的形式存放起来。 目标程序也称为可执行目标文件
下图为对上面这段话的理解
未命名文件(1).png
在Unix系统中,源文件到目标文件的转化是由编译器驱动程序完成的
2020-10-16_23-01.png
linux> gcc -o hello hello.c
gcc编译器驱动程序 读取 源程序文件hello.c,并把它翻译成一个 可执行目标文件hello。翻译过程分四个阶段,执行这四个阶段的程序(预处理器,编译器,汇编器,链接器)一起构成了编译系统。
1.预处理阶段。预处理器修改原始的C程序,得到扩展名为.i的另一个C程序。如:读取引入的文件,并把它直接插入程序文本中。
2.编译阶段。将C程序转化成汇编语言程序。
3.将汇编语言程序转化成机器语言指令,将这些指令打包成可重定向目标程序的格式,转化成一个二进制文件。
4.链接阶段。合并函数的预编译文件,转化成可执行目标文件(二进制文件)。
网友评论