对于c++源文件,从文本到可执行文件一般需要四个过程:
预处理阶段:
对源代码文件中文件包含关系(头文件)、预编译语句(宏定义)进行分析和替换,生成预编译文件。
编译阶段:
这个阶段编译器主要做词法分析、语法分析、语义分析等,在检查无错误后后,把代码翻译成汇编语言。
汇编阶段:
将编译阶段生成的汇编文件转化成机器码,生成可重定位目标文件。
链接阶段:
将多个目标文件及所需要的库链接成最终的可执行目标文件。
command:
以a.c->a.out为例:
分步编译:
预处理:gcc -E a.c -o a.i。生成.i文件。
编译:gcc -S a.i -o a.s。生成.s文件。
汇编:gcc -c a.s -o a.o。生成.o文件。
连接:gcc a.o -o a.out。生成可执行程序a.out。
一步编译:
1.gcc a.c (默认生成名字为a.out的可执行文件,并不是我的名字是a.c才生成a.out而是所有的.c文件都会生成a.out)
2.gcc a.c -o a (这样是指定他的名字,生成一个名字为a的可执行文件)
考点
四个过程,以及每个过程的行为。