news 2026/9/7 17:09:51

QMK 开发环境搭建指南:从第一条命令到编译出第一个 .hex

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QMK 开发环境搭建指南:从第一条命令到编译出第一个 .hex

QMK 开发环境搭建指南:从第一条命令到编译出第一个 .hex

【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware

这篇指南带你从零搭好 QMK 开发环境,并把第一版键盘固件编译出来。你只需要一台 Windows、macOS、Linux(或 WSL)或 FreeBSD 的机器,全程跟着敲命令就行。卡住了也不用慌,文章后半部分按报错症状排了障,直接对号入座。

30 秒速查:核心命令一览

赶时间?看完这张表就能动手,后面的内容当补充:

步骤WindowsmacOSLinux / WSLFreeBSD
安装官网下载 QMK MSYS 安装包,双击装好brew install qmk/qmk/qmkpython3 -m pip install --user qmkpython3 -m pip install qmk
初始化qmk setupqmk setupqmk setupqmk setup
验证qmk compile -kb clueboard/66/rev3 -km default同左同左同左

各平台装 CLI 之前,还有一步装工具链的活,Windows 和 macOS 帮你干完了,Linux 和 FreeBSD 要自己敲几条包管理命令,见下文对应小节。

你装的到底是什么:QMK 编译环境的四层结构

QMK 编译环境不是某一个工具,而是一条四个环节的链:

  1. 包管理器:Windows 上的 MSYS2 pacman、macOS 的 Homebrew、Linux 的 apt / dnf / pacman、FreeBSD 的 pkg,负责拉取所有依赖包;
  2. 交叉编译工具链avr-gcc(专门编译 Atmel AVR 芯片固件的编译器)和arm-none-eabi-gcc(编译 ARM 芯片的交叉编译器)。之所以叫"交叉",是因为代码最终跑在键盘芯片上,而不是你的电脑里;
  3. CLI 入口qmk命令行工具,它替你管着固件仓库的位置、git 子模块和构建配置;
  4. 固件仓库qmk_firmware,所有键盘定义、键位图和驱动代码都在这里。

知道这条链之后,后面遇到编译失败你就能先定位"断在哪一环",再去对应的位置排障,而不是从头开始怀疑一切。

Windows 上装 QMK MSYS:一个安装包带走工具链

前置

  • Windows 10 或 11(64 位)
  • 约 5 GB 空闲磁盘
  • 安装过程中把杀毒软件放一边,别让它抢戏

  1. 去 QMK 官网的下载区,拿到 QMK MSYS 的安装程序。它把 MSYS2、git、Python 和两条工具链打成一个包,不用自己拼装。
  2. 双击安装程序,路径保持默认(一般是C:\QMK_MSYS)。
  3. 安装向导里有一项"Add to Windows Terminal",勾上,后面在 Windows Terminal 里直接就能开。

装完打开 QMK MSYS 终端,验证工具链就位:

qmk --version avr-gcc --version

预期能看到 qmk 的版本号,以及一行avr-gcc (GCC) 12.x之类的输出。

init

qmk setup

它会问你是否克隆固件仓库,输入 "y" 即可;路径提示直接回车用默认值。完成后~/qmk_firmware就出现了。

⚠️ 杀毒软件可能把安装包标成可疑文件。它是官方安装包,放行即可;更彻底的做法是把 QMK_MSYS 整个目录加进排除列表,编译会明显变快。

切到 macOS 这边,路径管理交给 Homebrew,更省心。

macOS 用 Homebrew Tap 装 QMK CLI

前置

  • macOS 12 及以上
  • 已安装 Homebrew(终端里brew --version有输出即可)

两条命令的事:

  1. 添加 QMK 官方 tap(可以理解为给 Homebrew 加一个 QMK 专用的配方源):
brew tap qmk/qmk
  1. 安装 CLI 本体:
brew install qmk/qmk/qmk

预期:依赖列表刷过之后,终端安静下来、回到提示符,没有任何报错。

  1. 验证一下:
qmk --version

init

qmk setup

提示是否克隆仓库时输 "y",仓库会落在~/qmk_firmware,路径提示直接回车。

⚠️ Apple Silicon(M 系列芯片)上 setup 会明显更久,因为 AVR 和 ARM 工具链没有现成的 arm64 二进制包,需要在本地编译,预留 30 到 60 分钟。期间终端没输出是正常的。

Linux 与 WSL 下装 QMK CLI 和工具链

前置

  • 发行版较新(Ubuntu 20.04+ / Fedora 38+ / Arch 等主流版)
  • 已安装 python3 和 git

  1. 先装基础依赖:
sudo apt update sudo apt install -y build-essential libusb-1.0-0-dev pkg-config

Fedora 用dnf,包名换成gcc make libusb1-devel pkgconfig,以你的发行版文档为准。

  1. 装 CLI 本体:
python3 -m pip install --user qmk

预期:Successfully installed qmk-x.x.x

  1. 再补上工具链,缺一条对应一条:
sudo apt install -y gcc-avr binutils-avr avr-libc avrdude sudo apt install -y gcc-arm-none-eabi

两条都装,才能同时覆盖 AVR 和 ARM 两种芯片的键盘。

init

qmk setup

输入 "y" 确认克隆,路径回车用默认的~/qmk_firmware

⚠️ 如果装完敲qmk提示找不到命令,九成是~/.local/bin不在 PATH 里,直接跳第⑤节第一条。

FreeBSD 这边同样走包管理器的路子:pkg install装 git、gmake、python3、avr-gccarm-none-eabi-gccavrdude,再python3 -m pip install qmk,最后qmk setup,流程与 Linux 相同。OpenBSD、NetBSD 思路一致,包名以各自系统的包列表为准。

第一次编译:一条命令生成 .hex

环境是否真的通了,编译一把最诚实。进仓库,挑一台仓库里真实存在的键盘,用默认键位:

cd ~/qmk_firmware qmk compile -kb clueboard/66/rev3 -km default

⚠️ 注意-kb-km是"短横线 kb",不是下划线,这行别抄错。

一切顺利的话,终端最后几行长这样:

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 - 17216/32256 (15040 bytes free)

看到LinkingCreating load file都是[OK],并且工作目录下多了.hex.elf文件,恭喜,你的 QMK 开发环境算是正式开张了。哪一步挂了?翻到下面按症状对号入座。

按症状排障:报错原文在这里对号入座

症状一句话原因解法
qmk: command not found用户 bin 目录不在 PATH见下方第一条
编译报子模块缺失仓库子模块没拉下来qmk git-submodule
编译规则不匹配仓库与工具链版本错位更新仓库后重跑 setup
刷固件提示权限不足没有 USB 访问权限加 udev 规则
WSL 里设备不存在USB 没透传进 Linuxusbipd 三步透传
ARM 键盘编译失败只装了 AVR 工具链补装arm-none-eabi-gcc

qmk: command not found

  • 现象bash: qmk: command not found
  • 原因:pip 装到了~/.local/bin,但这个目录不在 PATH 里。
  • 解法
export PATH="$HOME/.local/bin:$PATH" echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc which qmk

最后一行能打印出路径就修好了。

子模块缺失

  • 现象:编译时报... is not a valid submodule之类的错误。
  • 原因:固件仓库依赖 git 子模块,单独 clone 或更新时没带上。
  • 解法
qmk git-submodule qmk compile -kb clueboard/66/rev3 -km default

再不行就把仓库删掉重新qmk setup,干净利落。

工具链版本冲突

  • 现象No rule to make target '.build/...'
  • 原因:固件仓库更新了,本机的qmk setup没跟着重新跑,工具链版本对不上。
  • 解法
cd ~/qmk_firmware git pull qmk setup

setup 会把工具链补齐到仓库要求的版本,然后再编译。

USB 权限不足

  • 现象:刷固件时libusb_error: LIBUSB_ERROR_ACCESS
  • 原因:Linux 没给你当前用户访问这个 USB 设备的权限。
  • 解法
echo 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"' | sudo tee /etc/udev/rules.d/50-qmk.rules sudo udevadm control --reload-rules

拔插一下设备,再刷一次试试。

WSL 里设备不存在

  • 现象lsusb里根本看不到你的键盘。
  • 原因:键盘插在 Windows 侧,WSL 的 Linux 内核看不到它。
  • 解法:用 Windows 自带的 usbipd 把设备"递"给 WSL(包名以官方文档为准):
usbipd list usbipd bind --busid 2-4
sudo usbip attach -r 127.0.0.1 -b 2-4

WSL 里再lsusb,应该能看到设备了。

编译 ARM 键盘报找不到工具链

  • 现象arm-none-eabi-gcc: command not found
  • 原因:QMK 同时支持 AVR 和 ARM 两类芯片,两条工具链是分开装的,装过 AVR 不等于装过 ARM。
  • 解法:按 Linux 小节第 3 步补装gcc-arm-none-eabi,然后重编。

环境跑通之后做什么

  • 改键位:从键位图(keymap)入手,参考 keymap 文档 把 F13 换成你喜欢的键;
  • 刷固件:编译出的 .hex 需要写进键盘,流程见 flashing 文档;
  • 完整构建细节:QMK 官方构建指南 里有 make 参数的逐项说明;
  • 进阶方向:宏、OLED 屏幕、编码器这些 Quantum 功能,等你第一版键位稳定后再碰不迟。

环境跑通了,接下来就是调键位的快乐时光了。

【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 17:09:21

Unity游戏角色镜像技术:从Sprite到骨骼动画的完整实现方案

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

作者头像 李华
网站建设 2026/9/7 17:09:12

嵌入式固件核心三要素:启动流程、故障定位与OTA升级

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

作者头像 李华
网站建设 2026/9/7 17:06:50

AgentScope 2.0实战:从零搭建多智能体协作应用全指南

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

作者头像 李华
网站建设 2026/9/7 17:04:48

AI Agent驱动的用户回放分析:从行为证据链到转化率优化

做用户回放分析的人都知道,这活儿表面上是在看录屏,实际上是在做“考古”——从一堆鼠标轨迹和点击热力里,还原用户当时到底在想什么,为什么走到了这一步却突然放弃。传统的回放工具能告诉你“用户在哪个页面停留最久”“哪里点击…

作者头像 李华
网站建设 2026/9/7 16:59:52

开源Windows清理工具实战:从设计到1700+ Star

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

作者头像 李华
网站建设 2026/9/7 16:59:21

AI Skills实战:腾讯云上打造生产级Agent工具链

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

作者头像 李华