gcc 只用来编译C
g++ 编译C/C++
1.预处理(进行宏替换/去注释/条件编译/头文件展开等)
先创建 code.c 文件
-E
--> 从现在开始,进行程序的翻译,一旦预处理做完,就停下来
-o
--> 表明 -o 后面的文件名称
code.i 保存的是code.c 预处理之后的结果
我们分屏同时打开
宏替换了,注释去了,条件编译也不见了
而code.i 前面有那么多内容是因为头文件展开(把要包含的头文件内容拷贝进头文件)
编译时编译源文件,和头文件无关
预处理完后还是C语言,是一个干净的C语言
2.编译(生成汇编)
-S
--> 开始进行程序翻译,编译做完,形成汇编,就停下来
3.汇编(生成机器可识别代码)
-c
--> 开始进行程序的翻译,汇编完成就停下来
-o
--> 1.可重定位二进制文件
2.无法执行
1.二进制文件
2.无法执行
4.链接(生成可执行文件或库文件)
我们的 .o 文件和库文件进行链接 --> 可执行