
Zephyr 离线开发环境完整指南3 步在无网 Linux 机器上完成编译【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyrZephyr 是一款面向多种硬件架构的嵌入式 RTOS。如果你的开发机处在内网隔离实验室、军工或产线环境连不上外网那么west update、SDK 下载、pip install会全部失败。这篇文章教你把一整套 Zephyr 离线开发环境搬进无网机器源码、模块、工具链、Python 依赖全部走本地编译验证用 QEMU不依赖任何硬件。这套方案做完你能拿到什么一台完全断网也能出固件的编译机从cmake配置到生成zephyr.elf全程零网络请求可复用的资源包一个 workspace 压缩包 一个 pip 依赖目录 一个 SDK 安装包以后换机器直接解压两条路线默认保留west工具推荐也讲不清理 west 的纯 CMake 路线方便你按团队规范选择准备工作两台机器和四样资源你需要一台有网的装配机负责下载和一台无网的目标机Linux最终编译用。资源清单如下资源来源说明Zephyr 源码 全部模块本仓库即一个完整zephyrproject工作区Zephyr SDK 离线安装包SDK 官网对应版本 tar.xz版本以仓库根目录 SDK_VERSION 为准当前为1.0.1Python 依赖包pip download产物对应 scripts/requirements-west.txt目标机基础工具已预装即可git、cmake、ninja、python33.9无板卡验证另需qemu-system-x86_64磁盘留 10GB 以上。workspace 里包含主仓库和几十个模块仓库加上.git历史体积不小。核心思路把所有网络动作换成本地动作Zephyr 的构建依赖不止主仓库。清单文件 west.yml 把几十个模块仓库HAL、驱动库、加密库等的名称、路径、固定提交号全部钉死west工具负责按这份清单批量克隆并切到对应版本。zephyrproject/ ├── zephyr/ # 主仓库含 west.yml 清单 ├── modules/ │ ├── hal/... # 各厂商 HAL │ ├── lib/... # 通用库 │ └── crypto/... # 加密模块 └── bootloader/ # 如 mcuboot所谓离线化本质上只做了两件事把从远程 URL 克隆换成从本地压缩包恢复以及把pip 在线安装换成--no-index本地安装。构建系统本身完全感知不到断网只要模块目录在位、版本正确。Zephyr 多仓库模型主仓库与模块仓库的关系六步搭好离线环境第 1 步在联网机上装配完整工作区west init -m https://gitcode.com/GitHub_Trending/ze/zephyr zephyrproject cd zephyrproject west update # 按 west.yml 克隆全部模块并切到固定提交 west status # 确认输出为空即全部模块与清单一致west status必须为空再往下走。它不为空说明有模块版本漂移带病打包后目标机上一定报错。第 2 步下载其余两件资源# Python 依赖注意把 west 本身也下载进同一目录 pip download west -r zephyrproject/zephyr/scripts/requirements-west.txt -d pip_offline # 整个工作区打包.git 目录一并带走模块靠它做版本校验 tar czf zephyrproject.tar.gz zephyrproject # SDK 离线包下载 zephyr-sdk-1.0.1_linux-x86_64.tar.xz版本号对照 SDK_VERSION 文件pip download的机器最好与目标机使用相同 Python 大版本和 CPU 架构否则离线安装时会出现 No matching distribution。第 3 步恢复工作区并装 Python 依赖目标机tar xzf zephyrproject.tar.gz pip install --no-index --find-links../pip_offline west -r zephyrproject/zephyr/scripts/requirements-west.txt cd zephyrproject恢复后不要运行west update——它会尝试连网络。模块已就位且版本正确时west不会主动发起任何网络请求。第 4 步安装 Zephyr SDKmkdir -p ~/zephyr_sdk tar xf ~/zephyr_offline/zephyr-sdk-1.0.1_linux-x86_64.tar.xz -C ~/zephyr_sdk source ~/zephyr_sdk/zephyr-sdk-1.0.1_linux-x86_64/setup.sh # 把 SDK 的交叉编译器加入 PATHsetup.sh只作用于当前 shell需要永久生效就追加到~/.bashrc。第 5 步编译 hello_world保留 west 路线cd zephyrproject/zephyr west build -b qemu_x86_64 samples/hello_world-b指定目标板samples/hello_world 是最小的验证工程qemu_x86_64是仓库自带的 QEMU 虚拟板见 boards/qemu/不需要真实硬件。第 6 步可选不装 west 的纯 CMake 路线如果你的环境禁止安装west可以直接调 CMake但需要手动把所有模块路径喂给构建系统通过-DZEPHYR_MODULES路径1;路径2;...参数列出模块清单仍对照 west.yml。官方对该路线的说明见 doc/develop/west/without-west.rstcmake -S samples/hello_world -B build \ -DBOARDqemu_x86_64 \ -DZEPHYR_MODULES/path/to/modules/hal/st;/path/to/modules/lib/picolibc ninja -C build模块越多这个分号列表越长。这也是官方建议新手保留west的原因它替你自动维护ZEPHYR_MODULES。怎么确认环境真的通了两个可观测的成功标志west build -t run # 在 west build 之后执行直接启动 QEMU终端先打印*** Booting Zephyr OS ***随后出现Hello World! qemu_x86_64—— 从 CMake 配置、编译、链接到运行全链路贯通构建目录生成build/zephyr/zephyr.elf和zephyr.binls -lh能看到非零大小的固件文件看到Hello World! qemu_x86_64就代表无网编译已可用之后只需把-b qemu_x86_64换成真实板卡名如nrf52840dk/nrf52840固件烧录方式参考 doc/develop/flash_debug/host-tools.rst。三个高频报错的处理方法现象 1构建时提示要访问网络 / 克隆仓库失败原因工作区里有模块与清单版本不一致工具想拉取远端同步。处理回到装配机重新west update并确认west status为空后重新打包个别缺失模块可手动从本地副本克隆再git checkout到 west.yml 里对应的revision提交号。现象 2CMake 报找不到 SDK 工具链或ZEPHYR_BASE未定义原因当前 shell 没执行过 SDK 的setup.sh或 west 工作区路径没被识别。处理在当前 shell 先source ~/zephyr_sdk/zephyr-sdk-1.0.1_linux-x86_64/setup.sh确认你在zephyrproject/zephyr目录内执行且west topdir输出为zephyrproject。现象 3pip install --no-index提示找不到某个依赖原因pip_offline目录是用不同 Python 版本或不同 CPU 架构下载的预编译包对不上。处理在与目标机同版本 Python、同架构的联网机上重新执行第 2 步的pip download整个目录覆盖后再装。日常维护与进阶月度更新节奏联网机执行west update west status确认干净后重新打包替换目标机上的 workspace一次完成源码 模块 清单同步版本基线纪律模块提交号以 west.yml 为准SDK 版本以 SDK_VERSION 为准两者是配套发布的不要拿旧 SDK 配新源码按需裁剪若项目只用少数模块如只做 STM32 UART可按 west.yml 的path字段手工维护一份精简的-DZEPHYR_MODULES列表显著缩小打包体积想深入构建原理从根目录 CMakeLists.txt 和 Kconfig 入手即可下一步把zephyrproject.tar.gz拷上你的无网机器跑通west build -t run在 QEMU 里看到那句Hello World!离线开发环境就算正式交付了。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考