一,关于GCC
GCC的全称是GNU Compiler Collection,是GNU工具链中的一种。GCC不仅支持C/C++语言,还支持Fortran/Ada/Java等语言的编译。
GCC和gcc是两个概念,GCC是工具链的集合,里面除了gcc/g++还包含了ccl,cclplus等组件。gcc/g++只是GCC工具链的一个子集。
二,g++和gcc的区别
gcc可以判断出目标程序所使用编程语言的类别,会把xxx.c文件当作C语言编译,把xxx.cpp文件当作C++语言编译。而g++只把xxx.c和xxx.cpp一律都当作C++语言来编译。
在编译C++文件的时候,g++会自动链接一些标准库或基础库,而gcc不会。当正在编译的C++代码文件依赖STL标准库的时候,为了使用STL,gcc命令需要增加参数–lstdc++。因此,虽然gcc和g++都可以编译C++语言程序,但是使用g++会更方便一些。
三,常见代码文件后缀名
(1)目标文件:
xxx.o, 操作系统:Linux, Mac
xxx.obj, 操作系统:windows
(2)二进制文件:
xxx(没有后缀名), 操作系统:Linux, Mac, FreeBSD,
xxx.exe, 操作系统:windows
xxx.hex,操作系统:嵌入式系统
(3)共享库文件,也叫动态库文件:
xxx.dll, 操作系统:windows
xxx.so, 操作系统:Linux
xxx.dylib, 操作系统:Mac
(4)静态库文件
xxx.a
四,C/C++语言的编译过程
1.预处理
预处理命令声明了编译时需要的各种头文件和宏,比如包含哪些头文件、宏定义的扩展、在哪个代码段做条件编译等。涉及预处理的语法有:#define,#include,#ifdef...#endif等。
2.编译
首先检查代码的规范性和语法错误等