编译器gcc介绍

0 Preface/Foreword

0.1 相关博客

MinGW & MinGW-W64介绍_mingw和mingw-w64-CSDN博客

1 gcc介绍

1.1 名字由来

早期,++GCC++是++G++NU ++C++ ++C++ompiler (GNU C编译器)。

现在GCC 的含义:GNU Compiler Collection (GNU编译器套件)。因为随着功能的扩展,GCC开始++支持C++、Go、Objective-C++等多种编程语言。

1.2 主要特点

  • 多语言支持:GCC以C/C++闻名,但GCC是一个多前端、共享后端的编译器集合,支持多种主流编程语言。
  • 跨平台与可移植性 :支持x86ARMMIPSRISC-V等多种硬件架构,可以在Linux、BSD、macOS、Windows等多种操作系统上运行。
  • 开源自由软件:遵循GPL(GNU共用公共许可证)和LGPL许可证发布,用户可以自由使用、修改和分发。
  • 模块化设计
    • 前端 :解析特定语言的源代码,生成抽象语法树。
    • 中间端:进行与机器无关的代码优化。
    • 后端 :生成特定硬件架构汇编代码机器码

1.3 编译流程

++GCC将源代码转换为可执行文件++通常经过++四个阶段++:

  1. 预处理(Preprocessing) :处理宏定义、头文件包含、条件编译等,生成**.i**文件。
  2. 编译(Compilation) :进行语法分析语义分析优化 ,++将代码转换为汇编语言++,生成**.s**文件。
  3. 汇编(Assembly)将汇编代码转换为机器指令,生成目标文件**.o**。
  4. 链接(Linking) :将多个目标文件库文件 链接在一起,生成最终的可执行文件

1.4 历史背景

  • ++创始人++ :由Richard Stallman于1987年发起,作为GNU计划的一部分,旨在为自由操作系统提供一个自由的编译器。
  • ++地位++ :GCC是Linux生态系统中最标准的编译器,也是许多其他编译器(如Clang /LLVM)出现之前的事实标准。

++简而言之++,GCC是一个强大、免费且广泛使用的工具链,负责将程序员编写的高级语言代码翻译成计算机能够执行的机器码。

1.5 GCC与Clang对比

GCC和Clang各有优势,没有绝对的好坏,主要看使用场景。Clang在开发体验上更友好,GCC在运行性能和生态上更成熟

1.5.0 官网

1.5.1 编译体验区别

  • 编译速度:Clang通常更快,尤其在增量编译和模版代码上,内存占用更低;
  • 错误提示:Clang的报错信息更清晰友好,能直接标记代码位置,适合新手调试;
  • 工具集成:Clang模块化设计友好,更容易集成到IDE(如VSCode、CLion)和静态分析工具中。

1.5.2 生成代码性能

  • 优化能力 :在高优化级别(如**-O3**)下,GCC生成的代码运行效率通常略高,尤其在整数运算和嵌入式领域。
  • 标准支持:两者都支持最新C/C++标准,Clang对新特性支持往往更快,GCC对传统GNU扩展兼容性更好。
  • 许可证:Clang采用BSD许可证,更宽松适合商用集成;GCC采用GPL许可证,开源生态更深厚。

1.5.3 不同场景怎么选

  • 选Clang:适合macOS开发、注重编译效率、需要良好错误诊断、希望使用现代静态分析工具的团队;
  • 选GCC:适合Linux系统默认环境、追求极致运行性能、依赖特定GNU扩展或嵌入式开发场景;
  • 混合使用 :大型项目可在++开发阶段++ 用Clang提升效率,++发布阶段++ 用GCC优化性能。
相关推荐
捷瑞电子工坊2 天前
Ubuntu 下安装 VSCode 和 gcc 的简单步骤
vscode·ubuntu·代码编辑器·安装教程·gcc·deb·snap
GKxx7 天前
在 HarmonyOS 上从源码构建 GCC 16(gcc/g++ + libstdc++ + libsanitizer):完整记录
c++·华为·harmonyos·鸿蒙·gcc
编程的一拳超人16 天前
C++AI编译错误自动修复神器-告别手动Debug的终极方案
clang·gcc·c++ 工程实践·c++ ai 工具开发实战·msvc解析
同勉共进2 个月前
记一例 vibe coding + gcc bug 导致的线程池死锁问题
c++·线程池·gcc·死锁·vibe coding
追兮兮2 个月前
MCUQuickStart:一键生成 STM32 / GD32 的 Keil、CMake、RTOS 工程
stm32·单片机·freertos·gd32·gcc·工程模版
William.csj3 个月前
Linux——普通用户离线源码编译 gcc-9 方法和调用教程
linux·服务器·gcc
2601_951645633 个月前
老牌C语言迎来重大蜕变,GCC 16+Clang 19全面适配C23标准
c·clang·gcc·嵌入式开发·c23
斐夷所非3 个月前
GCC 编译 | 命令参数、编译流程与链接机制
gcc
ScilogyHunter3 个月前
GCC完全指南
linux·gcc