GCC

GCC

GNU 编译器套件(GNU Compiler Collection),通常简称为 GCC,是一组编译器和开发工具组合,可用于 LinuxWindows、多种 BSD 以及其他操作系统。

用 Incredibuild 加速 GCC

什么是 GCC?

GNU 编译器套件(GNU Compiler Collection),简称为 GCC,是一组编译器和开发工具组合,可用于 LinuxWindows、多种 BSD 以及其他操作系统。GNU 编译器套件包括 C C++ Objective-CAdaGoFortran, D 语言前端。自由软件基金会(FSF)编写了 GCC,并将其作为完全自由的软件发布。

立即试用
什么是 GCC

GCC 的发展历史

1987 年 3 22 日,一个周日,Richard M. StallmanIT界称他为 RMS)发布了GCC,并邀请其他人进行测试。在接下来的十年中,这个项目并入 EGCS 的编译器。1999 4 月,这些项目再次合并,成为 GNU 项目的一部分,并重新命名为 GNU 编译器套件。

GCC Steering Committee 接手管理这个项目,并定期进行更新。目前最新版本是 20213 19 日发布的 10.2 版。

GCC 如何工作

GCC 是一个工具链,用于编译代码,将代码与各种库依赖项连接,并为程序集,最后形成可执行文件。GCC 遵循标准的 UNIX 设计理念,工具简单,但效果和性能一流。GCC 开发组件利用多个分散的工具辅助软件编译。

在源代码文件上运行 GCC 时,首先,GCC 预处理头文件,并消除注释。接下来,标记代码,扩展宏,检测编译有无错误,然后准备编译。将预处理后的文件发送到编译器,编译器创建程序对象和控制流的语法树,并形成汇编代码。然后汇编器将此代码转换为系统的二进制可执行代码。最后,增加所需的外部库引用链接。最终,形成可在目标系统中执行的程序。

立即试用

获取免费 License

如何下载 GCC?

几乎所有的 Linux 发行版都预装了 GCC,或者在主存储库中已存有 GCC,所以安装过程很简单。Debian 发行版,如 DebianUbuntu linuxmint,可运行“apt install build essentials”。在 RedHat 发行版,如 RedHat Enterprise LinuxFedoraCentOS Amazon Linux,则运行“yum group installDevelopment Tools”。在 Arch Manjaro Arch 发行版上,运行“pacman-S base devel”。

macOS 用户可以使用“brew install gcc”

有关 Windows 的安装说明,在后续小标题《GCC Windows》中为大家介绍。

GCC 的功能

GCC 为开发人员提供了丰富的功能,包括支持多种编程语言、深度代码优化和跨平台编译。了解更多 GCC 特性,请访问杜比回顾:GCC vs Clang.

GCC 用例

使用 GCC 进行编译的过程很简单,比如:

gcc hello.c -o hello

运行这个命令,处理 hello.c 文件,并生成一个名为“hello”的二进制文件。其他参数可以进一步传递。

gcc hello.c -O3 -o hello

在本例中,优化参数设置为 3,从而生成更优的代码。

其中也可以包括其他库。

gcc hello.c -lncurses -o hello

此用例包含了 ncurses 库。

更复杂的编译则由 makefile 管理,并通过“make”命令调用。

GCC Windows 版本

Windows 有两个选项,一是安装 WSLWindows Subsystem for Linux),并安装所选的发行版,按照上面的说明进行操作。或者可以使用 MinGWMinimalist GNU for Windows)发行版,该发行版可从链接获取。

WSL 选项,让 GCC 使用体验更像 Linux。现代 WSL 版本运行的是本地 Linux 系统,因此开发人员在使用此环境时,工作流程几乎没有偏差。不过 WSL 是一种虚拟化技术,因此会有一些性能成本。此外,图形程序可能不会造成性能或功能受损,因此 MinGW-W64 适合编译 GUI 软件的开发人员。

GCC Linux 版本

GCC 是 GNU 工具链的核心,GNU 工具链是用来编译大多数 Linux 和开源软件的开发系统。虽然有一些专业发行版省略了 GCC,但我们几乎可以在每个 Linux 系统中找到。Linux 内核本身主要是用 GCC 编译的。Linux 内核和 GNU 工具链的合作发展由来已久,以至于 Linux 生态系统通常被称为 GNU/Linux

GCC 的优势

  • GCC 最显著的优势可能是其 GPL 3(General Public license,通用公共许可证)许可证,用户可以因此自由使用软件。自由软件基金会相当支持这个项目,因此 GCC 社区也发展兴旺,开发人员集思广益,积极贡献,形成了一个良好的知识技术生态系统。
  • GCC 的模块化设计,让故障排除和源代码维护更容易,新功能更容易实现。

GCC 与 Incredibuild

GCC 是能加速开发,结合 IncredibuildGCC 速度更快。Incredibuild 通过进程虚拟化技术全马力加速进程,把每台主机变成一台拥有数百个内核的超级计算机。在 Incredibuild 的助力下,编译、测试到发布自动化的流程都可进行进一步提速,产品质量提高,速度显著加快。

icon

要点总结

GNU/Linux、开放源码软件和许多互联网的软件主干开发,都离不开 GNU 编译器套件强大、丰富的功能。

获取免费 License

More Compilers

  • Clang/LLVM

  • CUDA

  • MS (VS) C++

  • g++ / gnu

  • tcc

  • Intel c++ (floating license)

  • ARM c++ (floating license)