一、微观的C/C++编译执行过程
.c文件怎么变成可执行文件.exe ?
1、预处理: -E 宏替换,头文件展开,去打印
gcc -E hello.c -o hello.i
2、编译: -S 把 .i 文件编译成汇编代码文件 .i
gcc -S hello.i -o hello.s
3.汇编(Assemble):-c
汇编过程将上一步的汇编代码转换成机器码(machine code),这一步产生的文件叫做目标文件,是二进制格式。
gcc -c hello.s -o hello.o
4.链接(Linking): -o
链接过程将多个目标文以及所需的库文件(.so等)链接成最终的可执行文件(executable file)。
命令大致如下: gcc hello.o -o hello
这就是我们要使用编译脚本Makefile的原因
二、Makefile的编写:第一层
1.例1
![](https://img-blog.csdnimg.cn/161e86992ecd439bbae54a41a905182f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qmZ5a2QQEM=,size_16,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/11c25f97e47c4c7c9a28e71774887f57.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qmZ5a2QQEM=,size_16,color_FFFFFF,t_70,g_se,x_16)
2.例2
![](https://img-blog.csdnimg.cn/91b5499017f443818dd92b9abb2010e1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qmZ5a2QQEM=,size_18,color_FFFFFF,t_70,g_se,x_16)
三、Makefile的编写:第二层
![](https://img-blog.csdnimg.cn/6c331db38b594aba9913ca4719beaa8c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qmZ5a2QQEM=,size_19,color_FFFFFF,t_70,g_se,x_16)
四、Makefile的编写:第三层
![](https://img-blog.csdnimg.cn/e4d92f918cf446a5be31cba57b8df991.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qmZ5a2QQEM=,size_20,color_FFFFFF,t_70,g_se,x_16)
五、Makefile的编写:第四层
![](https://img-blog.csdnimg.cn/90609f6877a049cbb8f0df80cae8eb8d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qmZ5a2QQEM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/864ceb1f905c4a41a0efd8f5fb61fcbc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qmZ5a2QQEM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/222bdd298b3d44a9adc5a4781c3f01c2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qmZ5a2QQEM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/7d45ca017c79427499b34532f2828451.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qmZ5a2QQEM=,size_20,color_FFFFFF,t_70,g_se,x_16)