c语言速记
概述
详解
c语言的编译流程
- 预编译:该步骤用于将#include、#define的文件展开,这里只是符号的替换,经过这一步,文件的大小会变得很大
- 编译:这一步是将上面展开后的文件翻译成汇编语言
- 汇编:这一步将上面的文件变成.o的文件
- 链接:上面的三步都是针对单独的文件进行的操作,经过预编译、编译、汇编的过程,每一个文件都会生成一个对应的对象文件,这里插一句,在小的demo的工程里面,我们一般写一个文件就ok了,但是在大的工程里面我们可能会将功能拆分成很多块,每一块都对应了很多的源文件,链接的作用是将上述汇编生成的对象文件链接起来(毕竟不同的对象之间存在相互调用的情况,这一步是将被调用的文件和调用的文件链接起来),这一步会生成一个elf格式的文件
- 生成二进制文件:有elf格式的文件生成可执行的文件
鉴于上述流程的复杂性,一般都会有相应的makefile文件来使其变得可复用,不然上面的每次都需要执行一遍将会是一个无比复杂的情形,另外在语言的编程规范里面通常一个c文件就会对应一个.h的头文件。。。。
c语言针对单个文件进行编译的好处是加快了编译的速度,并且方便了问题的定位。之所以说加快的编译的速度是因为编译产生的.o的文件,如果源代码没有修改,那我们的.o文件也不会发生改变,因此针对这种情况我们是不需要再次进行编译的,而方便问题的定位则是由于单个的编译我们可以查看单个文件编译过程中的报错,进而确定哪个文件是有问题的。
https://www.cnblogs.com/laojie4321/archive/2012/03/30/2425015.html