第一步:预处理
解释:就是将源文件中包含的头文件(例如#include<stdio.h>)找到,并且将头文件的内容全部拷贝过来;
预处理步骤代码:gcc -E xxx.c -o xxx.i
-E :对xxx.c做预处理,不做后续的编译过程;
-o:指定处理结果保存到哪个文件中去;
示例:gcc -E helloword.c -o helloword.i
第二步:编译
解释:就是将上一步预处理之后的预处理文件进行编译得到汇编文件,理解:就是将c++语言(高级语言)转换成汇编语言(低级语言);
编译步骤代码:gcc -S xxx.i -o xxx.s
-S:对预处理后的xxx.i进行编译;
-o:指定处理结果保存到哪个文件中去;
示例:gcc -S helloword.i -o helloword.s
第三步:汇编
解释:将上一步编译之后得到的汇编文件(低级语言)进行转换得到计算机可以识别的机器指令(二进制);但是不包含printf的实现代码;
gcc -c xxx.s -o xxx.o
-c:只进行到编译完成就结束,不做链接的过程
-o:指定处理结果保存到哪个文件中去;
示例:gcc -c helloword.s -o helloword.o
第四步:链接
解释:将所有代码整合到一起,形成一个完整的可执行程序;
gcc xxx.o -o xxx
o:指定处理结果保存到哪个文件中去;