本文面向Makefile 纯新手,从零讲解:CubeMX 生成 Makefile 工程所需的环境、工具选择、安装配置、环境变量设置、工程编译全流程。全程使用官方工具、无冗余操作,看完即可独立完成编译。
前言
STM32 CubeMX 可以直接生成 Makefile 工程 ,无需安装 Keil、STM32CubeIDE 等大型 IDE,仅通过轻量命令行工具即可完成代码编译,生成可烧录的固件(.bin/.hex)。
这套方案体积小、跨平台、行业通用,是嵌入式开发必备基础技能。
一、Makefile 基础介绍
1. 什么是 Makefile?
Makefile 是一个编译规则脚本文件 ,它里面写好了代码如何编译、文件如何链接、输出固件的全套规则。
我们不需要手写复杂的编译命令,只需要执行一个 make 指令,工具就会自动按照 Makefile 的规则完成编译。
2. Makefile 在 STM32 开发中的作用
- 读取 CubeMX 生成的工程配置
- 自动调用编译器处理 C 代码、汇编文件
- 自动生成 STM32 可运行的固件文件
- 一键编译、一键清理编译产物
3. 核心分工(必记)
Makefile= 施工图纸make 工具= 指挥官(执行图纸)ARM 编译器= 工人(真正编译代码)
二、编译 STM32 Makefile 工程的必备条件
Windows 系统原生不支持 Makefile 编译,必须安装两个核心工具:
- 必选 :ARM 官方交叉编译器(
arm-none-eabi-gcc)→ 把 C 代码编译成 STM32 固件 - 二选一:Make 构建工具 → 执行 Makefile 脚本(Windows 无自带,需手动安装)
三、工具选择推荐
方案对比(根据需求二选一/或者都选择)
| 工具类型 | 推荐工具 | 特点 | 适合人群 |
|---|---|---|---|
| Make 工具 (二选一) | xpack-windows-build-tools | 轻量(几MB)、开箱即用、无冗余、嵌入式专用 | 只做 STM32 开发,追求极简 |
| MSYS2 + MinGW64 make | 通用型、功能全、可拓展其他开发 | 想兼顾其他编程学习 | |
| 编译器(必选) | arm-gnu-toolchain (arm-none-eabi-gcc) | ARM 官方、适配所有 STM32 芯片 | 所有开发者 |
四、官方下载链接
1. ARM 官方编译器(必装)
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
选择:arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi.zip
(1)网页中下滑,找到合适的版本下载内容:

2. 轻量 Make 工具(方案一,简洁解压即用)
https://github.com/xpack-dev-tools/windows-build-tools-xpack/releases
下载:xpack-windows-build-tools-4.4.1-3-win32-x64.zip
(1)直接下载最新版压缩包:

3. MSYS2(方案二,通用型)
下载:Windows 64 位安装包
(1)直接下载最新版exe安装包:

五、工具安装与配置
第一部分:安装 ARM 编译器(必装)
将下载的 zip 压缩包:arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi.zip
解压到无中文、无空格的路径
示例:C:\Programs\arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi

第二部分:安装 Make 工具(二选一)
方案 A:xpack 轻量版(推荐新手)
- 下载的 zip 压缩包:
xpack-windows-build-tools - 解压到无中文、无空格的路径
示例:C:\Programs\xpack-windows-build-tools-4.4.1-3 - 该工具无需安装,解压即用

方案 B:MSYS2 版(通用型)
- 安装 MSYS2,路径无中文、无空格
- 安装完成后,打开 MSYS2 MINGW64 终端

- 执行命令(复制粘贴,回车运行):
bash
# 第一步:更新包管理器
pacman -Syu
- 若终端自动关闭,重新打开 MSYS2 MINGW64,执行:
bash
# 第二步:补全更新
pacman -Su
- 安装 make 工具(仅安装需要的工具,不装冗余内容):
bash
# 第三步:安装 mingw32-make
pacman -S mingw-w64-x86_64-make
- 出现提示输入
y回车,等待安装完成

六、系统环境变量配置
环境变量的作用:让系统在任意目录都能找到编译工具。
1. 打开环境变量设置
右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
找到下方 系统变量 → Path → 编辑

2. 添加工具路径(根据你的安装路径修改)
必加:ARM 编译器路径
plain
C:\Programs\arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi\bin
方案 A:添加 xpack 工具路径
plain
C:\Programs\xpack-windows-build-tools-4.4.1-3\bin
方案 B:添加 MSYS2 工具路径
plain
C:\Programs\MSYS2\mingw64\bin
3. 保存配置
一路点击 确定,关闭所有窗口(必须保存,否则配置无效)
七、验证工具安装成功(关键步骤)
- 打开 CMD 或 PowerShell(快捷键:Win+R 输入 cmd)
- 依次输入以下命令,验证工具是否正常:
1. 验证 ARM 编译器
bash
arm-none-eabi-gcc -v
✅ 显示版本号 → 成功

2. 验证 Make 工具
方案 A(xpack):
bash
make -v

方案 B(MSYS2):
bash
mingw32-make -v
✅ 显示版本号 → 成功

八、使用 CubeMX 生成 Makefile 工程
- 打开 STM32CubeMX,新建工程,选择你的 STM32 芯片
- 完成芯片引脚、时钟、外设配置(常规配置)
- 进入 Project Manager 页面 :
- Project Name:自定义工程名
- Project Location:自定义路径
- Toolchain / IDE :选择 Makefile(核心选项)
- 点击右上角 GENERATE CODE,生成工程
- 生成完成后,打开工程文件夹,可看到
Makefile文件


九、命令行编译 STM32 工程
1. 进入工程目录
- 打开 CMD
- 切换到你的 Makefile 所在目录
示例:
bash
cd C:\Users\Wang2\Desktop\makefile-test\project

2. 执行编译命令
方案 A(xpack 工具):
bash
make clean
make

方案 B(MSYS2 工具):
bash
mingw32-make clean
mingw32-make

3. 编译成功标志
控制台显示:
plain
arm-none-eabi-objcopy build/xxx.elf build/xxx.bin -O binary
✅ 工程目录下会生成 build 文件夹,里面有 .bin/.hex 固件文件

4. 清理编译文件(可选)
bash
# xpack 工具
make clean
# MSYS2 工具
mingw32-make clean
十、新手常见问题
- 报错:'make' 不是内部或外部命令
环境变量未配置成功,检查 Path 路径是否正确。 - 报错:'arm-none-eabi-gcc' 不是内部或外部命令
ARM 编译器未安装,或未勾选自动添加环境变量。 - 编译失败
检查工程路径是否包含中文、空格(CubeMX 工程不支持中文路径)。 - MSYS2 安装失败
以管理员身份运行终端,重新执行更新命令。
十一、总结
全套流程一句话概括
- 安装 ARM 编译器(真正编译代码)
- 安装 Make 工具(执行 Makefile)
- 配置环境变量(让系统找到工具)
- CubeMX 生成 Makefile 工程
- 命令行执行
make/mingw32-make→ 一键编译
核心工具关系
- CubeMX → 生成 Makefile 规则
- Make 工具 → 指挥官,调度编译流程
- ARM 编译器 → 工人,生成 STM32 固件
按照本文步骤操作,所有 Windows 电脑都可以快速搭建 STM32 Makefile 编译环境!