无论是高级程序设计语言还是专用程序设计语言,都不能被计算机系统直接识别,用这些语言所编写的程序代码称为源程序,源程序需要通过预先设计好的专用程序进行转换,转换为计算机系统可以识别的机器指令,然后才能交由计算机系统执行。
编辑是程序员通过编辑软件录入源代码的过程。
编译是文件录入后,使用编译程序对源文件进行编译,目标文件已经是二进制的机器代码了。
一方面有些程序使用频率高,一般程序员难以自行开发,因此编译系统通常将这些功能预先编译好,以程序库的形式提供给程序员使用。
另一方面,待开发的程序可能不只一个源文件组成,而是由多个源文件构成的,经过编译后,每个源文件生成一个不完整的目标文件,将这些目标文件拼在一起,才能构成整个目标文件。
链接过程就是对组成整个程序的各个目标文件,程序库进行封装,生成最终的目标程序的过程。
C语言编译流程:
预处理-->编译-->汇编-->链接 -->a.out
预处理是把宏定义的指令信息拷贝到源程序中,进行头文件替换,不检查语法错误。
可以通过gcc编译命令【gcc -E 源文件(.c) -o 生成文件(.i)】 生成.i文件查看。
编译通过gcc编译命令[gcc -S 预处理文件(.i文件)]命令编译,这时会检查语法错误。生成.s文件。
汇编把文本文件编译成机器的二进制文件。通过gcc命令【gcc -c .s文件】,生成.o的文件。
链接是把多个.o的文件,链接成一个可执行的动态文件。输出.out文件。