GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器,被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。原本只能处理 C语言,GCC 很快地扩展,变得可处理 C++,之后也变得可处理 Fortran、Pascal、Objective-C、Java, 以及 Ada与其他语言。
g++是 linux下c++的编译器,在执行编译工作的时候,总共需要4步
1.预处理,生成.i的文件
2.将预处理后的文件不转换成汇编语言,生成文件.s
3.有汇编变为目标代码(机器代码)生成.o的文件
4.连接目标代码,生成可执行程序。
简单的说,gcc 是c的编译器,g++是c++的编译器。
后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。
编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了。
编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。
所以,编译C++文件,使用gcc只是进行编译,无法进行链接,导致include库失败。应使用g++来完成C++源码的编译,链接工作。