1.GCC是啥

1. 全称

GNU Compiler Collection,GNU 编译器套件 早期原名:GNU C Compiler(只编译 C 语言),后来扩展支持多语言,改名编译器集合。

2. 核心作用

Linux/Unix 系统标准编译工具,把 C/C++/Objective-C/Go/Fortran 等高级语言翻译成机器可执行程序。

  • gcc:默认编译 C 语言
  • g++:调用 gcc 并自动链接 C++ 标准库,编译 C++

总结一句话就是可以将 代码从C语言代码和C++代码到二进制源文件的工具,想要将写好的c语言代码运行,就必须要有他这个工具,主要是将下面4个步骤帮你自动完成

  • 预处理(-E):展开头文件、宏替换
  • 编译(-S):生成汇编代码
  • 汇编(-c):生成二进制目标文件 .o
  • 链接:整合目标文件 + 系统库,生成可执行文件

# 编译c代码,输出a.out

gcc test.c

# 指定输出文件名

gcc test.c -o test

# C++编译

g++ main.cpp -o main

2.Cmake是啥

CMake 是跨平台工程构建管理工具,本身不编译代码,只负责「生成编译规则文件」,指挥编译器、链接器干活。 传统单片机项目手写 Makefile 极其繁琐,CMake 用一套简单脚本(CMakeLists.txt)自动生成编译配置,Windows/Linux/Mac 全平台通用。

Windows 默认编译器是 MinGW,生成电脑 exe; CMake 可以配置切换成 arm-none-eabi-gcc,专门生成 STM32 ARM 内核能运行的固件,这是单片机开发的核心需求。,我使用的是Clion加上cmake加GCC,加上NinJa,通过cmake链接项目,生成NinJa构建脚本,一键编译所有代码,输出成可以下载进入单片机的.elf固件

3.GDB是啥

GDB = GNU Debugger,GNU 开源调试器。 专门用来查看程序运行、打断点、单步、看变量、排查崩溃。 分两种使用场景:

  1. PC 本地程序调试(Windows/Linux 电脑软件)
  2. 嵌入式远程调试(你的 STM32 单片机,搭配 OpenOCD)

1. 核心类比(分清整套链路角色)

  • CMake + arm-gcc:做饭,把 C 代码做成 .elf 固件(带调试信息的 “半成品饭菜”)
  • OpenOCD:传菜员 / 接线桥,一边连电脑,一边通过 ST-Link 连单片机芯片,监听 3333 端口
  • arm-none-eabi-gdb(在你电脑本地):你的操作台遥控器 你在 CLion 点断点、单步、查看变量、复位芯片,全部操作指令由 GDB 下发,交给 OpenOCD 转发给单片机硬件执行。

2. GDB 两大核心能力

能力 1:解析 elf 固件里的调试符号

编译时 gcc 会把代码行号、函数名、全局 / 局部变量打包进 .elf 文件。 GDB 读取 elf 后,就能做到:

  • 看 C 源码调试,不用看晦涩的汇编地址;
  • 直接打印变量值,不用手动读内存地址。

如果你编译时关掉调试信息,GDB 只能看到汇编,完全无法对应 C 代码。

能力 2:远程通信控制硬件(嵌入式关键)

单片机不能直接跑 GDB,必须走远程模式:

  1. GDB 执行命令 target remote localhost:3333 连接 OpenOCD 服务;
  2. 所有硬件操作指令,GDB 自己不会处理,打包发给 OpenOCD:
    • monitor reset halt:复位单片机、停机(monitor 是专门发给 OpenOCD 的指令)
    • load:下载 elf 固件到 STM32 Flash
    • break main:在 main 函数打断点
    • continue:让单片机继续运行
    • print variable:读取单片机 RAM 里变量的值

了解了上述的概念之后,可以进行Clion的配置和安装了

4.安装和配置Clion

1.前往官网安装Clion

安装Clion

2.按照博主开源步骤进行配置

安装 CLion | 波特律动

3.配置环境,按照博主开源的方案

不过,在这一步,我建议如果你主力使用hal库进行开发,你就需要直接下载STM32CubeCLT_1.22.0,这个工具包,里面直接包含了,gcc,g++,GDB,再按照博主额外下载openOCD进行调试就行

Clion开发STM32 | 波特律动

4.展示我的配置界面

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐