LubanCat RK3588 实时 Linux 开发(三):SDK 环境准备与 flex、bison、LZ4 依赖排查
摘要从主机依赖、AArch64 交叉编译器和 LZ4 版本三个方面建立可重复的 LubanCat 内核构建环境。适用对象在 Ubuntu 主机上构建 LubanCat Linux SDK 的开发者。本文只准备构建环境不会修改目标板系统。文章目录本篇要解决什么问题排错原则一、构建链路是什么二、安装主机依赖三、确认交叉编译器四、确认 lz4五、构建前快速自检六、做一个“一键构建前自检”七、三个高频误区误区 1交叉编译器能运行环境就完整误区 2SDK 自带 lz4 能执行脚本就一定能找到误区 3在目标板安装 flex/bison 可以解决主机构建错误八、本文验收清单小结工作流实测截图专栏导航参考资料本篇要解决什么问题很多内核编译失败并不是源码错误而是开发主机工具链不完整。LubanCat SDK 构建同时涉及两类程序一类在 x86_64 开发主机上运行例如flex、bison、lz4另一类才是用 AArch64 交叉编译器生成给 RK3588 运行的内核和模块。先把这两类工具分开排错会简单很多类型运行位置典型工具出错后的表现Host 工具Ubuntu 开发主机flex、bison、bc、dtc、lz4构建脚本在配置/检查阶段直接失败Target 工具链开发主机执行生成 ARM64 目标aarch64-none-linux-gnu-gcc内核、模块编译失败或架构错误目标板运行环境LubanCatmodprobe、ip、uname只用于安装和运行验证不负责交叉编译排错原则先确认“命令是否存在”再确认“版本是否正确”最后确认“PATH 是否指向你以为的那个程序”。这比一上来修改内核源码更有效。一、构建链路是什么完整的 LubanCat SDK 可以处理内核、设备树、rootfs 和镜像本文使用的kerneldeb目标只构建内核相关 DEB。内核使用 AArch64 交叉编译器但 Kconfig 解析器和压缩检查工具运行在开发主机上因此“交叉编译器正常”并不代表构建环境完整。二、安装主机依赖Ubuntu 主机可执行sudoaptupdatesudoaptinstall-y\build-essential flex bisonbc\libssl-dev libelf-dev libncurses-dev dwarves\device-tree-compiler cpiorsyncu-boot-tools其中flex生成 Kconfig 词法分析器bison生成 Kconfig 语法分析器bc、libelf-dev和dwarves常用于内核构建libncurses-dev用于menuconfigdtc、cpio、rsync参与设备树和 initramfs 处理。缺少flex或bison时典型错误是/bin/sh: 1: flex: not found /bin/sh: 1: bison: not found三、确认交叉编译器SDK$HOME/lubancat/LubanCat_SDKTOOLCHAIN$SDK/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin$TOOLCHAIN/aarch64-none-linux-gnu-gcc--version不要混用主机 GCC 和目标 AArch64 GCC前者编译 Kconfig 主机工具后者编译 ARM64 内核和模块。四、确认 lz4SDK 的内核检查脚本会调用lz4。先检查命令是否存在以及版本command-vlz4 lz4--version如果系统版本过旧可以使用 SDK 已生成的工具SDK$HOME/lubancat/LubanCat_SDK$SDK/output/host-tools/lz4/lz4--versionexportPATH$SDK/output/host-tools/lz4:$PATHcommand-vlz4 lz4--version只运行 SDK 内置二进制的--version并不能让check-kernel.sh自动找到它还要像上面一样把所在目录临时加入PATH。也可以按 SDK 提示安装 LZ4 v1.9.4。安装后再次执行command -v lz4避免仍然调用旧路径。五、构建前快速自检test-x$TOOLCHAIN/aarch64-none-linux-gnu-gcccommand-vmakeflex bisonbcdtc cpiorsynclz4--version上述命令应在同一个准备构建的终端中执行。若test或command -v返回非零先修复环境不要继续分析内核源码。六、做一个“一键构建前自检”为了避免每次漏掉某个工具可以在 SDK 根目录临时执行下面的检查脚本#!/usr/bin/env bashset-uSDK${SDK:-$HOME/lubancat/LubanCat_SDK}TOOLCHAIN$SDK/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/binfailed0forcmdinmakeflex bisonbcdtc cpiorsynclz4;doifcommand-v$cmd/dev/null21;thenprintf[OK] %-10s %s\n$cmd$(command-v$cmd)elseprintf[MISS] %s\n$cmdfailed1fidoneiftest-x$TOOLCHAIN/aarch64-none-linux-gnu-gcc;thenecho[OK] AArch64 cross compiler$TOOLCHAIN/aarch64-none-linux-gnu-gcc--version|head-n1elseecho[MISS] AArch64 cross compilerfailed1fiexit$failed这个脚本的意义不是替代 SDK而是把“环境问题”提前暴露。只要它返回非零就先解决主机环境不要急着分析内核源代码。七、三个高频误区误区 1交叉编译器能运行环境就完整不对。Kconfig、设备树、压缩和打包过程中会调用大量主机工具。误区 2SDK 自带 lz4 能执行脚本就一定能找到不对。check-kernel.sh通过 PATH 查找命令因此还要确认command -v lz4指向期望路径。误区 3在目标板安装 flex/bison 可以解决主机构建错误如果build.sh是在开发主机执行缺失依赖就必须在开发主机修复。八、本文验收清单主机make/flex/bison/bc/dtc/cpio/rsync均可用lz4 --version可正常执行PATH 指向明确AArch64 交叉编译器存在且可执行明确区分 host 工具和 target 工具链自检失败时不进入下一步kerneldeb。小结构建错误应先按“缺少命令—命令版本—路径优先级”的顺序排查。只有依赖完整后日志中的错误才真正反映内核或设备树问题。工作流实测截图图1首次执行 kerneldeb 时的真实依赖错误说明应先补齐主机工具。图2SDK 交叉编译器和 host-tools/lz4 自检输出。专栏导航专栏LubanCat RK3588 实时 Linux 开发实战第 3/18 篇上一篇LubanCat RK3588 实时 Linux 开发二picocom 串口调试完整指南下一篇LubanCat RK3588 实时 Linux 开发四构建 Linux 6.1 PREEMPT_RT 内核与 DEB 包参考资料Linux 内核构建依赖说明Kbuild 文档文中的版本号、接口名、设备地址和测试数据均应以自己的板卡实测为准引用命令前请先确认当前 SDK、内核和启动布局。标签LubanCat SDKLinux内核交叉编译flexbison

相关新闻

LubanCat RK3588 实时 Linux 开发(四):构建 Linux 6.1 PREEMPT_RT 内核与 DEB 包

LubanCat RK3588 实时 Linux 开发(四):构建 Linux 6.1 PREEMPT_RT 内核与 DEB 包

摘要:使用正确的 RK3588 defconfig 构建 Linux 6.1 kerneldeb,并通过 pipefail、日志和阶段化检查定位失败原因。 适用对象:已经准备好 LubanCat SDK、需要生成 Linux 6.1 内核 DEB 包的开发者。构建必须在开发主机执行。 文章目录本篇要解决…

2026/9/21 18:32:55 阅读更多 →
从零搭建一个 AI Infra 实验室⑦:12GB 显存到底能跑多大模型——模型精度与量化

从零搭建一个 AI Infra 实验室⑦:12GB 显存到底能跑多大模型——模型精度与量化

上一篇,我们终于把一次 LLM 推理真正拆开了:Prompt↓ Tokenizer↓ Input Tokens↓ Prefill↓ KV Cache↓ Decode↓ Output Tokens同时也知道,一次推理真正占用 GPU 显存的,并不只有模型本身:GPU VRAM│├── Model We…

2026/9/21 18:32:53 阅读更多 →
Vant 4 DropdownMenu 下拉菜单组件完整指南:从基础用法到源码原理

Vant 4 DropdownMenu 下拉菜单组件完整指南:从基础用法到源码原理

Vant 4 DropdownMenu 下拉菜单组件完整指南:从基础用法到源码原理 【免费下载链接】vant A lightweight, customizable Vue UI library for mobile web apps. 项目地址: https://gitcode.com/GitHub_Trending/va/vant 下拉菜单(DropdownMenu&…

2026/9/21 18:33:18 阅读更多 →

最新新闻

可怕的真相怎么做?这份避坑指南救了你

可怕的真相怎么做?这份避坑指南救了你

可怕的真相怎么做?这份避坑指南救了你 你是不是也这样:语法背得滚瓜烂熟,LeetCode 刷题手速飞快,但一让你从零搭个项目,脑子直接死机? 别慌,这不仅是你的问题,更是绝大多数初学者的通病。 很多人以为编程是“背公式”,只要把 API…

2026/9/22 1:56:02 阅读更多 →
2026最新xianzhi性能优化实战:3招解决复制代码跑不通的顽疾

2026最新xianzhi性能优化实战:3招解决复制代码跑不通的顽疾

2026最新xianzhi性能优化实战:3招解决复制代码跑不通的顽疾 复制来的代码跑不通,报错信息满天飞,你是不是也卡在调试第一步?别急,这不是你的代码能力问题,而是环境配置和依赖管理的典型陷阱。2026最新的技术栈变化让旧教程失效,但掌握…

2026/9/22 1:56:02 阅读更多 →
图解coller原理:面试被问懵?3步吃透性能优化

图解coller原理:面试被问懵?3步吃透性能优化

图解coller原理:面试被问懵?3步吃透性能优化 面试被问“coller”原理,当场卡壳?别慌。很多开发者对底层机制一知半解,导致回答空洞。今天用图解方式拆解coller核心逻辑,直击性能瓶颈与优化本质。…

2026/9/22 1:56:02 阅读更多 →
别再被假教程坑了:爱情岛论坛网址线路一保姆级教程与底层解析

别再被假教程坑了:爱情岛论坛网址线路一保姆级教程与底层解析

别再被假教程坑了:爱情岛论坛网址线路一保姆级教程与底层解析 看了一堆教程还是不会写项目?这是不是你的日常? 我见过太多开发者,收藏夹里躺满了“从零到一”的链接,硬盘里存满了源码,但一旦脱离沙箱环境,面对真实的生产级代码就手足无措。…

2026/9/22 1:56:02 阅读更多 →
directory.createdirectory实战:3步搞定性能优化,告别空目录报错

directory.createdirectory实战:3步搞定性能优化,告别空目录报错

directory.createdirectory实战:3步搞定性能优化,告别空目录报错 刚学完 os 模块,对着 mkdir…

2026/9/22 1:56:02 阅读更多 →
机峰网入门到精通:3招搞定复制代码跑不通的底层逻辑

机峰网入门到精通:3招搞定复制代码跑不通的底层逻辑

机峰网入门到精通:3招搞定复制代码跑不通的底层逻辑 刚拿到机峰网项目的源码,或者从网上扒下来的配置片段,一跑就报错?那种“明明看着对,为什么就是通不了”的无力感,是每个刚从学校出来、想通过 机峰网…

2026/9/22 1:55:02 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →