讲师中心 微信公众号
AI工具推荐 视频效率加速

基于Sublime Text与GNU Make的嵌入式裸机开发编译链搭建

胖磊吖_3943

胖磊吖_3943

发布时间:2026-07-06 08:02:10

|

166人浏览过

|

来源于php中文网

原创

答案是PATH未正确配置或shell环境不匹配:Windows下Sublime Text等工具仅读取系统PATH而非用户PATH,需将arm-none-eabi-gcc的bin路径(如C:\Program Files\GNU Arm Embedded Toolchain\12.2 2022.12\bin)添加至系统环境变量PATH并重启编辑器,且避免路径含空格。

基于sublime text与gnu make的嵌入式裸机开发编译链搭建

arm-none-eabi-gcc 装了却找不到命令?PATH 和 shell 环境不匹配

Windows 下最常遇到的报错是 'arm-none-eabi-gcc' 不是内部或外部命令,哪怕你确认安装路径里确实有这个可执行文件。根本原因不是没装,而是 Sublime Text 启动时继承的是「系统 PATH」而非你手动在 PowerShell 或 CMD 里临时加的路径。

实操建议:

  • 用 where arm-none-eabi-gcc 在 CMD 中确认实际路径(比如 C:\Program Files\GNU Arm Embedded Toolchain\12.2 2022.12\bin)
  • 把该路径完整粘贴进「系统环境变量 → PATH」,**不是用户变量**,重启 Sublime Text
  • 别用 Chocolatey 或 Scoop 安装后直接调用——它们默认只写入用户 PATH,Sublime Text 启动时不读取
  • 验证方式:在 Sublime Text 里按 Ctrl+Shift+P → 输入 Build System: New Build System,新建一个 build 文件,里面写 "cmd": ["arm-none-eabi-gcc", "--version"],保存后选它并 Ctrl+B,能输出版本号才算真正生效

Makefile 在 Windows 上执行失败:pwd、rm、&& 全报错

嵌入式项目里的 Makefile 通常直接抄自 Linux,但 Windows 的 cmd.exe 和 PowerShell 都不原生支持 pwd、rm、mkdir -p 这类命令,更别说 && 分隔符在 cmd 里会触发语法错误。

实操建议:

  • 不要改 Makefile 去适配 cmd——太脆弱。改用 MinGW-w64 或 MSYS2 提供的 make.exe,它自带 POSIX 工具链(pwd、rm、sh 都有)
  • 下载 MSYS2 后,在其终端里运行 pacman -S make mingw-w64-x86_64-gcc,然后把 C:\msys64\mingw64\bin 加进系统 PATH
  • Sublime Text 的 build system 中,把 "cmd" 改成:["make", "-f", "Makefile", "all"],**不要加 shell=True 或调用 cmd /c**——让 MSYS2 的 make 自己调度 sh
  • 如果 Makefile 里用了 $(shell pwd),确保它前面没写死 /bin/sh;MSYS2 默认用 sh,路径分隔符自动转为 Unix 风格

Sublime Text 编译结果不刷新?缓存和构建目标路径写死了

你改了代码、按 Ctrl+B,但烧录的还是旧固件,或者提示 no rule to make target 'main.o' —— 很可能是因为 Makefile 里写的输出目录(如 BUILD_DIR := build)被 Sublime Text 的 build system 缓存了,或者 clean 规则根本没被执行。

Sublime Text Build Linux版
Sublime Text Build Linux版

Sublime Text Linux x86-64 deb 安装包。官方也提供 rpm、tar.xz 和软件源安装方式。

下载

实操建议:

  • 在 Makefile 开头加一句:$(info [MAKE] Building in $(PWD)),每次构建时会在 Sublime 的 build panel 里打印当前路径,确认是否进对了项目根目录
  • clean 规则必须显式写成:rm -rf $(BUILD_DIR)/*.o $(BUILD_DIR)/*.elf $(BUILD_DIR)/*.bin,不能只写 rm -rf $(BUILD_DIR) —— Windows 下 rm -rf 对空目录可能静默失败
  • Sublime 的 build system 里加一行:"working_dir": "${project_path}",,强制所有命令在项目根目录下执行,避免相对路径错乱
  • 如果用了 $(wildcard src/*.c) 这类函数,确保 src/ 目录存在且有 .c 文件,否则 OBJS 变为空,链接阶段直接失败

生成的 .elf 能编译过,但 OpenOCD 烧不进芯片:工具链 ABI 不匹配

常见现象是 make 成功生成 firmware.elf,但 openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "program firmware.elf verify reset exit" 报错:undefined reference to `__libc_init_array' 或直接卡在 target state: halted 不往下走。

实操建议:

  • 检查你用的 arm-none-eabi-gcc 版本是否带 --specs=nosys.specs 参数——裸机必须关掉 libc 初始化,否则依赖不存在的系统调用
  • Makefile 的 LDFLAGS 里必须包含:-nostartfiles -nodefaultlibs -nostdlib -lc -lgcc -lnosys,其中 -lnosys 是关键,它提供空实现的 _sbrk、_write 等桩函数
  • 别用 arm-none-eabi-gcc 自带的 newlib(除非你真要 printf),裸机推荐用 nosys 或手写极简 syscalls.c
  • OpenOCD 的 target/stm32f1x.cfg 必须和你芯片型号严格对应,F103 和 F407 的 flash bank 地址不同,烧录地址错会导致校验失败

最易被忽略的一点:Windows 下路径含空格(比如 C:\Users\My Name\project)会让 Makefile 里的 $(shell pwd) 输出带引号的路径,后续传给 arm-none-eabi-gcc 就变成无效参数。务必把项目放在无空格路径下,比如 D:\stm32\led_blink。

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

80

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

40

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

40

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

60

2026.09.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

280

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

160

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

120

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

80

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn