一、编译的四个阶段
1、预处理:
编译处理宏定义等宏命令,生成后缀为.i的文件。
2、编译:
将预处理后的文件转换成汇编语言,生成后缀为.s的文件。
3、汇编:
由汇编生成的文件翻译为二进制目标文件,生成后缀为.o的文件。
4、链接:
将多个目标文件(二进制)结合库函数等综合成的能直接独立执行的执行文件,生成后缀为.out的文件。
二、主要区别
1、对于.c和.cpp文件,gcc分别当做c和cpp文件编译,语法强度不一样。
2、对于.c和.cpp文件,g++统一当做cpp文件编译。
3、使用g++编译文件时,g++会自动连接标准库STL,而gcc不会自动连接STL。
4、gcc编译.cpp文件时,为了能够使用STL,需要加参数-lstdc++。
5、gcc在编译.c文件时,可使用的预定义宏是比较少的。
6、gcc在编译.cpp文件,g++在编译.c和.cpp文件时,会加入一些额外的宏,如下:
#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern