当前位置: 首页 > news >正文

CMake工具链

基本概念

常用编译器

介绍C/C++项目中的主流编译器

  1. GCC (GNU Compiler Collection)
    官网: https://gcc.gnu.org/
    GCC 是自由软件基金会(FSF)的关键项目。它包含了C、C++、Objective-C、Fortran、Ada、Go等多种语言的编译器。其中的C编译器通常被称为gcc。

特点:
跨平台: 支持几乎所有主流操作系统(Linux, Windows (通过MinGW或Cygwin), macOS, 各种BSD等)。
高度可移植: 是许多Unix-like系统的标准编译器。
高度优化: 提供从-O0到-O3、-Os等多种优化级别,生成的代码性能极高。
标准符合度高: 对C89、C99、C11、C17等标准支持非常好。

常见用法:

gcc -o hello hello.c # 最基本编译
gcc -Wall -g -o hello hello.c # 开启所有警告(-Wall)和调试信息(-g)
gcc -O2 -o hello hello.c # 使用2级优化
2. Clang / LLVM
官网: https://clang.llvm.org/

简介: Clang是LLVM项目的前端,专门负责C、C++、Objective-C等语言的编译(词法分析、语法分析、生成中间代码)。LLVM则负责优化和生成机器码。通常我们说的“用Clang编译”指的是使用clang这个命令。

特点:

出色的错误和警告信息: 它的报错信息非常清晰、友好,对初学者极其有帮助,是很多人选择它的首要原因。

编译速度快: 通常比GCC更快。

内存占用低。

模块化设计: 与IDE(如Xcode)集成得更好。

高度兼容GCC: 在大多数情况下可以直接替换GCC。

地位: 是macOS和iOS开发的默认编译器,在Linux和Windows上也广泛使用。是现代编译器中的佼佼者。

常见用法: (与GCC几乎完全相同)

bash
clang -o hello hello.c
clang -Wall -Wextra -g -o hello hello.c
3. MSVC (Microsoft Visual C++)
简介: 微软开发的C/C++编译器,是Visual Studio IDE的一部分。

特点:

Windows原生: 与Windows平台和Windows SDK集成度最高,是开发Windows应用程序和游戏的首选。

强大的IDE集成: 在Visual Studio中提供了无与伦比的调试和开发体验。

兼容性: 对C99标准支持较晚且不完整,但对C++标准支持很好。更专注于微软自身的扩展和Windows生态。

使用: 通常在Visual Studio的图形界面中点击按钮即可编译。命令行工具为cl.exe。

  1. 其他编译器 / 衍生版本
    MinGW-w64 (Minimalist GNU for Windows)

简介: 是GCC编译器在Windows上的一个移植版本,它生成本地的Windows可执行文件(如.exe和.dll),而不需要像Cygwin那样的兼容层。

用途: 在Windows上获取GNU开发环境(GCC, GDB, make等)的最流行工具。很多开源项目都提供基于MinGW-w64编译的Windows版本。

TCC (Tiny C Compiler)

简介: 一个非常小巧、快速的C编译器。遵循C99标准。

特点: 体积小(约100KB),编译速度极快,支持直接执行C代码(类似解释器)。

用途: 适合快速脚本化、嵌入式或学习目的,不适合开发大型项目。

ICC (Intel C++ Compiler)

简介: 英特尔开发的编译器,现在已基于LLVM/Clang。

特点: 针对Intel的CPU(如Xeon, Core系列)进行了深度优化,在某些数值计算、科学计算领域能生成性能更高的代码。

用途: 高性能计算(HPC)等特定领域。

Make

Make是主要用于C/C++项目的构建工具,通过 Makefile 文件中的一系列规则定义整个构建步骤,和 Java 中的 Ant 类似。

http://www.hskmm.com/?act=detail&tid=10006

相关文章:

  • 20250918 - NGP Token 攻击事件:价格维持机制为攻击者做了嫁衣
  • 【脑电分析系列】第6篇:经典ERP成分解析 — P300、N170、N400等波形与它们代表的认知功能 — 洞察大脑的认知“电信号语言” - 教程
  • 9.19
  • [GDKOI2023 提高组] 游戏 题解
  • CSP-J/S 2025 游记
  • 2025.9.19 计数dp小记
  • Odoo19.0发布、微信支付、支付宝支付和顺丰模块同步上线
  • 9月14-21日小记 - L
  • ctfshow web入门 命令执行
  • 解题记录说是 | P3695 CYaRon!语
  • 分享一个极度精简的绿色的 五笔输入法
  • 实用指南:AI推理范式:从CoT到ReAct再到ToT的进化之路
  • sign up - Gon
  • ctfshow web入门 信息搜集
  • 完整教程:数据结构:单链表的应用(力扣算法题)第二章
  • CF2039E Shohag Loves Inversions
  • U522155 板垣 カノエ is WATCHING YOU std
  • ctfshow web
  • 代码随想录算法训练营第三天 | leetcode 203 707 206
  • Codeforces Round 1051 (Div. 2) A~D2
  • 【F#学习】数组:Array
  • CTFWEB姿势总结
  • 规模化加速AI:从用户、开发者到企业的深度策略解析
  • ctfshow 菜狗杯
  • 国际服务器(VPS):泰国、印尼、菲律宾、马来西亚、香港、台湾、新加坡、日本、美国、英国等。
  • 缓存常见问题
  • ctfshow 电子取证
  • Hello,World!
  • 最新IDEA 2025 专业版破解永久破解教程(附资源)intellij IDEA
  • AtCoder ABC423F - Loud Cicada 题解 容斥原理