GCC是由 GNU 项目开发的经典编程语言编译器,属于 GNU Compiler Collection 编译器套装。该软件以 GPL 与 LGPL 开源许可证发行,是一款自由免费的编译工具。作为类 Unix 系统及苹果 Mac OS X 等平台的标准编译器,它支持多种编程语言编译,具备稳定可靠的编译性能与良好的跨平台兼容性,广泛应用于程序开发、系统构建、嵌入式开发等场景,为开发者提供高效、规范、开源的编译环境,是软件开发领域常用的核心编译工具。
| 相关软件 | 版本说明 | 下载地址 |
|---|---|---|
| 猿编程客户端 | 官方版 | 查看 |
| Sublime Text | 中文版 | 查看 |
| JD-GUI | 中文版 | 查看 |
| vc++6.0 | 简体中文企业版 | 查看 |
软件亮点
软件开发:GCC是许多Linux发行版默认的编译器,用于编译Linux内核、GNU操作系统和其他大量的应用程序。
系统编程:GCC支持多种硬件平台,使得开发者能够编写跨平台的系统级程序。
教学与研究:GCC的开源特性吸引了全球开发者参与其维护和更新,形成了社区驱动模式,为教学和研究提供了丰富的资源。
软件功能
代码优化
提供多级优化选项(-O0至-O3),通过消除冗余代码、循环展开等技术提升程序性能。例如:
-O1:基础优化(如指令调度)。
-O2:深度优化(如函数内联、循环展开)。
-O3:激进优化(可能增加编译时间)。
调试支持
与GDB调试器无缝集成,通过-g选项生成调试信息,便于定位代码问题。
静态/动态库支持
静态库(.a):编译时将库代码复制到可执行文件中,独立性强但体积较大。
动态库(.so):运行时加载库文件,节省磁盘空间但需确保依赖库存在。
软件特色
多语言支持:GCC支持多种编程语言,包括C、C++、Fortran、Ada、Go、Rust等,使得开发者可以使用同一套工具链进行多种语言的开发。
跨平台:GCC支持多种硬件平台和操作系统,包括Linux、Windows、macOS等,能够生成跨平台的代码,使得编写的程序能在不同的系统架构上运行。
高度可定制:GCC提供了丰富的编译选项,用户可以通过各种参数和选项来控制编译过程,满足不同的开发需求。
高效优化:GCC提供了多种优化级别,能够生成高效的机器代码,提升程序的执行效率。
常见问题
头文件缺失
错误示例:fatal error: stdio.h: No such file or directory
原因:系统未安装开发工具包或头文件路径未正确配置。
解决:
Ubuntu/Debian:sudo apt install build-essential
CentOS/RHEL:sudo yum groupinstall "Development Tools"
手动指定路径:使用-I/path/to/headers添加头文件搜索路径。
使用说明
安装了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 介绍了这缺陷的额外案例。开发团队决定在单个改动中解决掉这个缺陷的所有案例,而不是只解决掉那些回归。
Rider 2019 最新版
UltraEdit 官方版 v29.00
phpstorm 2019 官方版