gcc 8.3官方版是一款由 GNU 开发的编程语言编译器工具,即GNU Compiler Collection,GNU编译器套装。gcc 8.3官方版是一套以 GPL 及 LGPL许可证所发行的自由软件,亦是自由的类Unix 及苹果计算机 Mac OS X 操作系统的标准编译器。
软件介绍
gcc 8.3官方版原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理
C++。之后也变得可处理 Fortran、Pascal、Objective-C、Java, 以及 Ada 与其他语言,所以改名GNU编译器套件(GNU Compiler Collection)
软件功能
1、gcc编译器以GPL及LGPL许可证所发行的自由软件;
2、既能处理C语言,也能处理C++;
3、支持Fortran、Pascal、Objective-C、Java,以及Ada与其他语言;
4、gcc编译器支持跨windows、mac、linux等平台;
5、可以透支和保存文件;
6、可以解决一个共同的碰撞;
7、可以进行解析器的越界。
软件结构
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 8.3 发布了,GCC 8.3 是 GCC 8 分支的 bug 修复版本,其中包含对 GCC 8.2 中的回归和严重 bug
的重要修复,自上一版本以来修复了超过 153 个错误。
GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套以 GPL 及 LGPL
许可证所发行的自由软件,也是 GNU计划 的关键部分,亦是自由的 类Unix 及苹果计算机 Mac OS X
操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。GCC 原本只能处理 C语言,随后增加了处理
C++的能力,再之后也变得可处理 Fortran、Pascal、Objective-C、Java,以及 Ada 等多种语言。
新版更新主要是针对 Windows 操作系统的一个 C++ Microsoft ABI 位阈布局(bitfield layout)Bug
的修复(PR87137)。具体如下:
A non-field declaration could cause the current bitfield allocation unit to
be completed, incorrectly placing a following bitfield into a new allocation
unit. The Microsoft ABI is selected for:
Mingw targets
PowerPC, IA-32 or x86-64 targets when the -mms-bitfields option is
specified, or __attribute__((ms_struct)) is used
SuperH targets when the -mhitachi option is specified, or
__attribute__((renesas)) is used
GCC 8 介绍了这缺陷的额外案例。开发团队决定在单个改动中解决掉这个缺陷的所有案例,而不是只解决掉那些回归。