欢迎光临
我们一直在努力

【底层架构-06】Linux 下 STM32 编译环境搭建(GCC+OpenOCD+VSCode,附完整避坑指南)

前言

很多嵌入式开发者习惯 Windows 下 Keil MDK 开发 STM32,但在 Linux 系统下,借助开源的ARM GCC 交叉编译工具链+OpenOCD 调试烧录工具,同样能搭建高效、免费的 STM32 开发环境,还能适配服务器开发、自动化编译等场景。

本篇教程基于 Ubuntu/Debian 系列 Linux 发行版,从零开始搭建 STM32 编译、烧录、调试一体化环境,全程命令行 + VSCode 配置,步骤详细、命令可直接复制,新手也能轻松上手,告别 Keil 付费限制!

适用系统:Ubuntu 18.04/20.04/22.04/24.04、Debian 系列适用芯片:STM32F1/F4/F7/L4/G4/H7 等全系列核心工具:arm-none-eabi-gcc(交叉编译)、OpenOCD(烧录调试)、make(构建)、STM32CubeMX(代码生成)、VSCode(代码编辑)

一、环境搭建前准备

1.1 更新系统软件源

首先打开终端,更新系统软件包列表,避免安装工具时出现依赖问题:

sudo apt update
sudo apt upgrade -y

1.2 安装基础依赖工具

安装编译、下载所需的基础工具包:

二、安装 ARM GCC 交叉编译工具链

STM32 是 ARM Cortex-M 内核,需要专用的arm-none-eabi-gcc交叉编译器,将 C 代码编译成 STM32 可执行的二进制固件。

2.1 一键安装工具链

Ubuntu/Debian 官方源直接提供该工具,执行以下命令即可安装:

sudo apt install -y gcc-arm-none-eabi binutils-arm-none-eabi gdb-multiarch

2.2 验证安装是否成功

安装完成后,查看编译器版本,验证安装:

arm-none-eabi-gcc -v

若输出版本信息(如 10.3/12.2/13.2 版本),说明安装成功!

三、安装烧录调试工具 OpenOCD

OpenOCD 是开源的片上调试工具,支持 ST-Link、DAPLink 等调试器,实现 STM32 固件烧录、在线调试功能。

3.1 安装 OpenOCD

终端执行命令安装:

sudo apt install -y openocd

3.2 验证 OpenOCD 安装

openocd -v

输出版本号即安装成功。

3.3 配置调试器 USB 权限(关键!)

Linux 下普通用户默认无法访问 USB 调试器,必须配置 udev 规则,否则会出现无法找到设备、烧录权限不足问题。

  • 创建 udev 规则文件:
  • sudo nano /etc/udev/rules.d/99-stm32-debugger.rules

  • 将以下规则复制到文件中(覆盖 ST-Link 全系列、DAPLink):
  • # ST-Link V2
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="0666", GROUP="plugdev"
    # ST-Link V2-1
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="0666", GROUP="plugdev"
    # ST-Link V3
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", MODE="0666", GROUP="plugdev"
    # DAPLink
    SUBSYSTEM=="usb", ATTRS{idVendor}=="c251", ATTRS{idProduct}=="f001", MODE="0666", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0d28", ATTRS{idProduct}=="0204", MODE="0666", GROUP="plugdev"

  • 按Ctrl+O保存,Ctrl+X退出,重新加载 udev 规则:
  • sudo udevadm control –reload-rules
    sudo udevadm trigger

  • 将当前用户加入权限组,重启电脑生效:
  • sudo usermod -aG plugdev,dialout $USER

    四、安装 STM32CubeMX(代码生成工具)

    借助 STM32CubeMX 可快速生成 STM32 初始化代码,直接导出 Makefile 工程,适配 Linux 编译环境。

  • 前往 ST 官网下载 Linux 版 STM32CubeMX:STM32CubeMX 下载地址
  • 下载完成后,解压安装包,赋予安装脚本权限:
  • chmod +x SetupSTM32CubeMX-*.linux

  • 执行安装,按照提示一步步完成即可:
  • ./SetupSTM32CubeMX-*.linux

    五、STM32 工程创建、编译与烧录(实战演示)

    5.1 用 STM32CubeMX 生成 Makefile 工程

  • 打开 STM32CubeMX,选择对应的 STM32 芯片(如 STM32F103C8T6)
  • 配置时钟、GPIO 等外设(以 LED 闪烁为例)
  • 进入Project Manager页面:
    • 设置项目名称、路径
    • Toolchain/IDE 选择 Makefile(核心!)
  • 点击GENERATE CODE生成工程代码
  • 5.2 Linux 下编译 STM32 工程

  • 终端进入生成的工程目录:
  • cd 你的工程路径

  • 直接执行make命令,一键编译:
  • 编译成功后,工程目录下会生成.hex/.bin/.elf格式的固件文件,即为可烧录的程序。
  • 5.3 OpenOCD 命令行烧录固件

    编译完成后,通过 OpenOCD 将固件烧录到 STM32 开发板:

  • 连接 ST-Link 与开发板,确保供电正常
  • 执行烧录命令(根据芯片系列修改 target 配置):
  • # STM32F1系列示例
    openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "program build/你的工程名.elf verify reset exit"

    常用芯片系列配置替换:

    • STM32F4:target/stm32f4x.cfg
    • STM32L4:target/stm32l4x.cfg
    • STM32H7:target/stm32h7x.cfg

    烧录成功后,开发板会自动复位,程序开始运行!

    六、VSCode 集成开发配置(可选,提升效率)

    如果需要可视化代码编辑、调试,可配置 VSCode 配合环境使用:

  • 安装 VSCode,打开工程目录
  • 安装必备插件:
    • C/C++(代码补全、语法提示)
    • Cortex-Debug(STM32 调试)
  • 配置工程头文件路径,让 VSCode 识别 STM32 库函数,避免代码飘红:
    • 按Ctrl+Shift+P,输入Edit Configurations (JSON)
    • 在includePath中添加工程头文件路径:
  • "includePath": [
    "${workspaceFolder}/**",
    "${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc",
    "${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F1xx/Include",
    "${workspaceFolder}/Drivers/CMSIS/Include"
    ]

    七、常见问题排查(高分必备避坑)

    问题 1:arm-none-eabi-gcc: command not found

    解决方法:重新安装工具链,或配置环境变量

    export PATH=$PATH:/usr/bin/arm-none-eabi-gcc

    问题 2:OpenOCD 无法找到 ST-Link

  • 检查 USB 线、调试器连接
  • 重新执行 udev 规则,务必重启电脑
  • 执行lsusb查看是否识别 ST-Link(出现0483:3748即正常)
  • 问题 3:make 编译报错

  • 检查工程路径是否包含中文、空格
  • 重新生成 Makefile 工程
  • 执行make clean清理后重新编译
  • 问题 4:烧录提示权限被拒绝

    重新配置 udev 规则,重启电脑,确认用户加入 plugdev 组

    八、总结

    至此,Linux 下 STM32 完整的编译、烧录、调试环境就搭建完成了!全程开源免费,无需依赖 Keil,命令行操作简洁高效,也能配合 VSCode 实现可视化开发,完美适配嵌入式 Linux 开发、自动化编译等场景。

    附录:常用命令汇总

    # 编译工程
    make
    # 清理编译文件
    make clean
    # STM32F1烧录命令
    openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "program xxx.elf verify reset exit"
    # 查看编译器版本
    arm-none-eabi-gcc -v

    下篇预告: 【底层架构-07】ESP-IDF 版本怎么选?最全版本选择、兼容性与避坑指南

    原创不易,如果本文对你有帮助,欢迎点赞、收藏、关注三连!有任何问题都可以在评论区留言,我会及时回复。

    赞(0)
    未经允许不得转载:171主机测评 » 【底层架构-06】Linux 下 STM32 编译环境搭建(GCC+OpenOCD+VSCode,附完整避坑指南)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址