新闻详情

新闻详情

首页 / 资讯中心 / 详情

QMK 固件编译环境搭建实战:从 qmk setup 到首次成功编译

发布时间:2026/9/14 1:34:25来源:尧图网络
QMK 固件编译环境搭建实战:从 qmk setup 到首次成功编译
QMK 固件编译环境搭建实战从 qmk setup 到首次成功编译【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware本文以 QMK 官方入门文档《Setting Up Your QMK Environment》为主线系统讲解键盘固件编译环境的完整搭建流程如何在 WindowsQMK MSYS / MSYS2、macOSHomebrew、Linux/WSL 与 FreeBSD 上安装 QMK CLI执行qmk setup完成环境初始化并用qmk compile -kb keyboard -km default完成第一次固件编译验证。读完后你将能够独立完成 QMK 构建环境的一次性配置并理解编译输出的各项含义为后续自定义 keymap 和刷写固件打下基础。1. 环境搭建总览与前置要求在编译任何 keymap 之前必须先安装相关软件并配置好构建环境。这一步只需做一次——无论你之后要为多少款键盘编译固件环境配置都是共享的。开始前需要准备的基础软件文本编辑器一个能编辑并保存纯文本文件的程序。注意许多操作系统自带的默认编辑器保存的不是纯文本文件可能附加隐藏格式信息因此需要确认所选编辑器能以纯文本方式保存。Toolbox可选QMK 官方提供的图形化工具支持 Windows 和 macOS可用于烧录和调试自定义键盘。如果你从未接触过 Linux/Unix 命令行建议先学习基本的命令行概念和常用命令——QMK 的所有构建操作都通过终端完成更多学习资源 中列出的命令行教程足以支撑你在 QMK 中的使用。从仓库结构看QMK CLI 本身是一个 Python 程序其运行依赖声明在 requirements.txt 中包括argcomplete命令行补全、hid、hjson、jsonschema、milc、pyserial、pyusb等包。qmk setup的作用之一就是为这套 Python 工具链安装所需的依赖并拉齐仓库子模块这也是为什么官方强烈建议使用安装脚本而非发行版自带的旧包。2. 准备构建环境各平台安装QMK 的设计目标是让环境搭建尽可能简单你只需准备好 Linux 或 Unix 风格的基础环境其余的交由 QMK 自己完成。按平台分别说明如下。2.1 WindowsQMK 官方维护了一个基于 MSYS2 的打包发行版Bundle其中已集成 CLI 和全部必要依赖并提供了一个名为QMK MSYS的终端快捷方式可以直接进入正确的构建环境。前置要求安装 QMK MSYS该外部链接来自官方文档安装时请以官方发布页为准。进阶用户手动安装 MSYS2不推荐给新手安装 MSYS2。安装完成后关闭所有已打开的 MSYS 终端紫色图标从开始菜单打开一个新的MinGW 64-bit 终端蓝色图标。注意MinGW 64-bit 终端不是安装完成后自动弹出的 MSYS 终端。你的命令行提示符应显示紫色的MINGW64字样而不是MSYS。然后在 MinGW64 终端中运行安装命令curl -fsSL https://install.qmk.fm | sh2.2 macOS前置要求安装 Homebrew按照 brew.sh 官方页面的说明操作。安装curl -fsSL https://install.qmk.fm | sh2.3 Linux / WSL发行版建议许多 Linux 发行版均可使用但主流发行版成功率最高。如果可能优先选择 Debian 及其衍生版Ubuntu、Mint 等、CentOS 及其衍生版Fedora、Rocky Linux 等、或 Arch 及其衍生版Manjaro、CachyOS 等。重要限制标准 QMK 构建环境不支持基于musl的 Linux 发行版例如 Alpine 系。安装curl -fsSL https://install.qmk.fm | shWSL 用户注意默认情况下安装过程会把 QMK 仓库克隆到 WSL 主目录中。如果你手动克隆请确保仓库位于 WSL 文件系统内部而不是Windows 文件系统即不在/mnt下——跨文件系统访问目前性能极差会显著拖慢构建。警告你的发行版软件源中的 QMK 相关软件包几乎可以肯定已经过时强烈建议使用上面的安装脚本而不是发行版包管理器。2.4 FreeBSDFreeBSD 的支持由社区以“尽力而为”的方式提供而非 QMK 维护者官方支持。强烈建议改用 Windows、macOS 或受支持的 Linux 发行版。安装pkg install -g py*-qmk安装结束后请遵照终端打印的后续说明操作可用以下命令重新查看pkg info -Dg py*-qmk3. 运行 qmk setup 完成初始化环境安装完成后在对应平台的终端中运行核心初始化命令。大多数情况下对安装脚本的每一个交互式提问都回答y即可。Windows打开QMK MSYS快捷方式运行qmk setupmacOS打开 Terminal运行qmk setupLinux/WSL打开任意终端运行qmk setupFreeBSD打开任意终端运行qmk setup。qmk setup3.1 指定 qmk 主目录可以通过参数指定qmk的安装主目录并在之后随时修改qmk setup -H path事后修改可通过 CLI 配置功能完成配置变量为user.qmk_home。查看全部可用选项qmk setup --help配置机制的详细用法参见 CLI 配置文档。3.2 GitHub 用户克隆个人 Fork如果你熟悉 GitHub 的使用推荐克隆自己的个人 fork 作为构建仓库而不是直接克隆上游仓库qmk setup github_username/qmk_firmware详细的 fork 工作流参见 GitHub 入门指南。不熟悉 fork 概念的新手可以安全忽略这一步直接运行qmk setup即可。3.3 常见问题Debian/Ubuntu 上bash: qmk: command not found在 Debian、Ubuntu 及其衍生版上可能遇到qmk命令找不到的错误。这是由于 Debian 在 Bash 4.4 发布时引入的一个缺陷——从 PATH 中移除了$HOME/.local/bin该缺陷在 Debian 上已修复但 Ubuntu 曾重新引入。修复方法很简单以普通用户身份执行echo PATH$HOME/.local/bin:$PATH $HOME/.bashrc source $HOME/.bashrc4. 验证构建环境编译第一个固件环境就绪后最好的验证方式就是真正编译一次固件。先从键盘的默认 keymap开始构建命令格式为qmk compile -kb keyboard -km default例如为 Clueboard 66% 编译固件qmk compile -kb clueboard/66/rev3 -km defaultkeyboard 参数说明-kb的值是相对于keyboards/目录的路径。上例对应的源码位于 keyboards/clueboard 下的66/rev3子目录。不确定自己键盘的名称时用qmk list-keyboards查看完整支持列表。编译完成后终端会输出大量构建过程信息结尾应类似Linking: .build/clueboard_66_rev3_default.elf [OK] Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK] Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK] Checking file size of clueboard_66_rev3_default.hex [OK] * The firmware size is fine - 26356/28672 (2316 bytes free)逐行理解这段输出能帮你快速判断构建是否健康输出行含义Linking: ...elf所有目标文件已链接为 ELF 可执行文件位于.build/目录Creating load file ... .hex生成用于烧录到 MCU 的 HEX 加载文件Copying ... to qmk_firmware folderHEX 文件被复制到仓库根目录方便后续烧写工具取用Checking file size ...校验固件尺寸是否超出 MCU 的 Flash 容量The firmware size is fine - 26356/28672 (2316 bytes free)实际占用 / Flash 总容量字节以及剩余空间。若剩余空间过小说明 keymap 或启用的功能过多需要裁剪从源码结构看qmk的各子命令都实现在 lib/python/qmk/cli/ 目录下如compile.py、new/、doctor/等模块qmk compile本质上是封装了 Makefile 构建系统的 Python 前端而 Makefile 与 builddefs/ 中的.mk文件如build_keyboard.mk、common_rules.mk则定义了真正的编译、链接与 HEX 生成规则。当你希望深入排查构建问题时可以从这条 Python CLI → Makefile → 平台构建规则platforms/ 下的.mk/.ld文件的调用链入手。5. 下一步至此QMK 构建环境已经完整可用。接下来可以使用qmk config user.keyboardkeyboard与qmk config user.keymapname设置默认键盘与 keymap 名减少每次命令的重复输入用qmk new-keymap基于defaultkeymap 创建自己的 keymap并编辑其中的keymaps[][MATRIX_ROWS][MATRIX_COLS]结构自定义按键编译成功后学习将 HEX 文件刷写到键盘的 MCU。完整的 keymap 创建与首次编译流程请继续阅读 构建你的第一个固件。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

GNSS接收机国标合规测试:自动化工具选型与落地的关键路径 2026/9/14 2:31:30

GNSS接收机国标合规测试:自动化工具选型与落地的关键路径

前阵子帮客户评估GNSS接收机国标合规测试的自动化方案,一听到GB/T 45086,对方技术负责人第一反应是:“是不是买台多通道模拟器就能过?”这个问题我听过太多次。GNSS自动化测试工具当然重要,但离“高效通过国标”还差着…

阅读更多 →
安徽文交所潮拍:给潮玩交易补上确权与合规流通这一课 2026/9/14 2:31:30

安徽文交所潮拍:给潮玩交易补上确权与合规流通这一课

最近潮玩圈讨论度最高的一个话题,不是什么新IP发售,也不是哪位博主拆盲盒翻车,而是安徽文交所的潮拍突然火了。主流媒体集体把镜头对准这个略显陌生的名字,标题里全是"潮玩经济新标杆"这类词。了解完整个玩法之后&#…

阅读更多 →
Apache Airflow CNCF Kubernetes Provider 版本演进全解析:从 1.0.0 到 10.22.0 的架构变迁与关键能力 2026/9/14 2:31:30

Apache Airflow CNCF Kubernetes Provider 版本演进全解析:从 1.0.0 到 10.22.0 的架构变迁与关键能力

Apache Airflow CNCF Kubernetes Provider 版本演进全解析:从 1.0.0 到 10.22.0 的架构变迁与关键能力 【免费下载链接】airflow Apache Airflow - A platform to programmatically author, schedule, and monitor workflows 项目地址: https://gitcode.com/GitHu…

阅读更多 →
C# WinForms超市系统实战:SqlDataReader+事务锁+原生打印 2026/9/14 2:31:30

C# WinForms超市系统实战:SqlDataReader+事务锁+原生打印

简介:这是一套面向C#初学者与.NET开发入门者的超市管理信息系统实战源码,适用于课程设计、毕业设计或小型零售业务信息化实践场景。资源完整包含可运行的Windows Forms桌面应用源码及配套SQL Server 2008数据库文件,覆盖商品、采购、销售、会…

阅读更多 →
AI出海Token治理实战:从基础设施选型到合规审计全解析 2026/9/14 2:31:30

AI出海Token治理实战:从基础设施选型到合规审计全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Python字符串处理与编码优化实战指南 2026/9/14 2:28:30

Python字符串处理与编码优化实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞