一、gcc和g++
编译的四个阶段:
- 预处理:编译处理宏定义等宏命令(eg:#define)
- 编译:将预处理后的文件转换成汇编语言
- 汇编:由汇编生成的文件翻译为二进制目标文件
- 链接:多个目标文件(二进制)结合库函数等综合成的能直接独立执行的执行文件
GNU项目包括,EMACS编辑器、GCC编译器、GDB调试器、汇编器、链接器、处理二进制文件的工具等。
就本质而言,gcc和g++并不是编译器,也不是编译器的集合,它们只是一种驱动器,根据参数中要编译的文件的类型,调用对应的GUN编译器而已。
gcc和g++的主要区别:
-
对于
*.c
和*.cpp
文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的) -
对于
*.c
和*.cpp
文件,g++则统一当做cpp文件编译 -
使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL
-
gcc在编译C文件时,可使用的预定义宏是比较少的
-
在用gcc编译c++文件时,