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/10/9 8:51:12 阅读更多 →
从零搭建一个 AI Infra 实验室⑦:12GB 显存到底能跑多大模型——模型精度与量化

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

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

2026/10/9 8:53:40 阅读更多 →
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/23 19:14:44 阅读更多 →

最新新闻

一洽服务记录如何转化为业务评估与数据洞察

一洽服务记录如何转化为业务评估与数据洞察

最近在复盘一洽(即时客户服务系统)的落地情况,我发现一个很普遍的现象:系统用起来了,会话记录每天成百上千条堆在后台,但真正拿这些数据做业务评估的团队少之又少。多数时候,服务记录只是被当成…

2026/10/9 9:13:05 阅读更多 →
Simulink七自由度整车模型建模与仿真:从方程到C代码生成

Simulink七自由度整车模型建模与仿真:从方程到C代码生成

做底盘电控的朋友,肯定都有过这种纠结:想验证ESC或ABS策略,直接用二十几自由度的多体模型,光是调参数就够喝一壶;用二自由度自行车模型,又算不出滑移率和轮速。Simulink 里的七自由度整车模型刚好卡在“够用…

2026/10/9 9:13:05 阅读更多 →
Agent-Reach 实战:为 AI Agent 扩展文件、命令与网络触达能力

Agent-Reach 实战:为 AI Agent 扩展文件、命令与网络触达能力

1. 从“Agent-Reach”这个名字说起:它到底想解决什么问题第一次看到 Agent-Reach 这个项目名,我的直觉是:这又是一个给 AI Agent 做“能力扩展”的东西。事实也确实如此。Reach 这个词本身就带着“触达、延伸、够得着”的意味,放在…

2026/10/9 9:13:05 阅读更多 →
嵌入式printf深度解析:格式符、缓冲与资源优化实战

嵌入式printf深度解析:格式符、缓冲与资源优化实战

1. 为什么一个“老掉牙”的printf,至今仍是调试现场的头号武器你有没有过这样的经历:凌晨两点,某个嵌入式设备突然卡死,串口日志只打印到一半就停了;或者在调试一个复杂状态机时,加了十几个printf却因为缓冲…

2026/10/9 9:13:05 阅读更多 →
工控机Ubuntu系统卡顿死机排查指南:从散热到固件的完整方案

工控机Ubuntu系统卡顿死机排查指南:从散热到固件的完整方案

1. 先搞清楚“卡顿”和“死机”到底算哪一类故障做工控的人基本都遇到过这种场面:现场设备在跑,突然鼠标一卡一卡的,远程连上去敲命令回车半天没反应,再过一会彻底没动静,只能让产线的人断电重启。客户报障的时候通常就…

2026/10/9 9:13:05 阅读更多 →
AF350-α-Bungarotoxin荧光探针:nAChR可视化的高效工具与实验策略

AF350-α-Bungarotoxin荧光探针:nAChR可视化的高效工具与实验策略

做神经科学研究的人,对α-Bungarotoxin这个名字应该不会陌生。它是从银环蛇毒液中分离出的一种小分子蛋白毒素,能高特异性地结合烟碱型乙酰胆碱受体(nAChR),在研究神经肌肉接头、受体聚集和定量分析时是绕不开的工具分…

2026/10/9 9:12:03 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/9 6:17:20 阅读更多 →