gcc是一款功能多样的编译器,能够帮助用户们进行多种类型计算机语言的编辑,整体编辑操作还是很简单的,让用户们更轻松的变成,是用户们编程必备的程序。
gcc内容
gcc原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。之后也变得可处理 Fortran、Pascal、Objective-C、Java, 以及 Ada 与其他语言,所以改名GNU编译器套件(GNU Compiler Collection)
GCC的外部接口长得像一个标准的Unix编译器。使用者在命令列下键入gcc之程序名,以及一些命令参数,以便决定每个输入档案使用的个别语言编译器,并为输出程序码使用适合此硬件平台的组合语言编译器,并且选择性地执行连接器以制造可执行的程序。每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为GCC的暂存器转换语言〈RTL〉的后端。编译器最佳化与静态程序码解析技术(例如FORTIFY_SOURCE,一个试图发现缓冲区溢位〈buffer overflow〉的编译器)在此阶段应用于程序码上。最后,适用于此硬件架构的组合语言程序码以Jack Davidson与Chris Fraser发明的算法产出。几乎全部的GCC都由C写成,除了Ada前端大部分以Ada写成。
基本规则
gcc所遵循的部分约定规则:
.c为后缀的文件,C语言源代码文件;
.a为后缀的文件,是由目标文件构成的档案库文件;
.C,.cc或.cxx 为后缀的文件,是C++源代码文件且必须要经过预处理;
.h为后缀的文件,是程序所包含的头文件;
.i 为后缀的文件,是C源代码文件且不应该对其执行预处理;
.ii为后缀的文件,是C++源代码文件且不应该对其执行预处理;
.m为后缀的文件,是Objective-C源代码文件;
.mm为后缀的文件,是Objective-C++源代码文件;
.o为后缀的文件,是编译后的目标文件;
.s为后缀的文件,是汇编语言源代码文件;
.S为后缀的文件,是经过预编译的汇编语言源代码文件。
使用说明
安装了MinGW,在其根目录下的bin文件夹中发现有等文件。
为了测试,我在该文件夹中新建了一个test.bat文件,将其中内容写为:
gcc test.cpp
然后在该文件夹中创建test.cpp文件并将其内容设置为:
双击test.bat文件,发现该文件夹中产生了一个a.exe文件,执行该exe文件,发现其与预期编译效果一致,说明编译成功。
gcc –o name test.cpp
可以生成名为name.exe的可执行程序。
把指令改为gcc –e test.cpp >test.txt 后,提示错误
gcc: no input files
而把参数E改为大写之后问题即解决:
gcc –E test.cpp > test.txt

gcc亮点
1、gcc编译器以GPL及LGPL许可证所发行的自由软件;
2、既能处理C语言,也能处理C++;
3、支持Fortran、Pascal、Objective-C、Java,以及Ada与其他语言;
4、gcc编译器支持跨windows、mac、linux等平台;
5、可以透支和保存文件;
6、可以解决一个共同的碰撞;
7、可以进行解析器的越界。