当前位置: 首页 > news >正文

在WSL2 Ubuntu 22.04上搞定RK3568 SDK编译:我遇到的8个坑和填坑方法

在WSL2 Ubuntu 22.04上搞定RK3568 SDK编译:我遇到的8个坑和填坑方法

作为一名长期在Windows环境下工作的嵌入式开发者,第一次尝试在WSL2中编译RK3568 SDK的经历简直像是一场噩梦。从环境配置到最终构建成功,我踩遍了几乎所有可能的坑。这篇文章将详细记录这些"血泪史",希望能帮助后来者少走弯路。

1. 环境准备:WSL2与Ubuntu 22.04的基础配置

在开始RK3568 SDK编译之前,确保你的WSL2环境已经正确配置。我使用的是Windows 11专业版,WSL2内核版本5.15.90.1,Ubuntu 22.04 LTS发行版。

关键配置参数:

  • 分配至少8GB内存给WSL2(建议12GB以上)
  • 交换空间设置为4GB
  • 磁盘空间不少于50GB
# 查看WSL版本 wsl --list --verbose # 在Ubuntu中检查系统信息 uname -a lsb_release -a free -h

注意:WSL2默认的内存分配可能不足,需要在Windows用户目录下的.wslconfig文件中进行配置:

[wsl2] memory=12GB swap=4GB

2. 第一个坑:Python2缺失导致的构建失败

当我满怀信心地执行build.sh all时,第一个错误就给了我当头一棒:

ERROR: No python2 ERROR: Running build_uboot failed!

问题分析:RK3568的U-Boot构建脚本仍然依赖Python2,而Ubuntu 22.04默认不再包含Python2。

解决方案:

sudo apt update sudo apt install python2

安装后,还需要确保系统能正确找到Python2:

# 检查Python2是否安装成功 python2 --version # 如果没有/usr/bin/python2,可以创建符号链接 sudo ln -s /usr/bin/python2.7 /usr/bin/python2

3. 第二个坑:缺失.config文件的构建错误

解决了Python2问题后,紧接着遇到的是Buildroot配置问题:

cp: cannot stat '.../.config': No such file or directory make: *** No rule to make target '.../Makefile'. Stop.

问题根源:SDK没有正确初始化Buildroot的配置文件,导致构建系统找不到必要的配置。

详细解决步骤:

  1. 进入SDK的Buildroot目录:
cd /path/to/SDK/buildroot
  1. 生成默认配置:
make O=output/rockchip_rk3568 rockchip_rk3568_defconfig
  1. 验证生成的文件:
ls output/rockchip_rk3568/

应该能看到.config.br-external.mkMakefile等关键文件。

4. 第三个坑:Perl构建时的段错误

这是最棘手的问题之一,错误日志显示:

Segmentation fault (core dumped) Failed to build miniperl. Please run make minitest

深入分析:这个问题源于Perl 5.26.1的一个已知bug,在使用GCC 10及以上版本编译时更容易触发。

两种解决方案:

方案一:应用补丁

  1. 创建补丁目录:
cd buildroot/package/perl mkdir -p patches
  1. 创建补丁文件0001-fix-null-pointer-strtod.patch,内容如下:
From 1e7c716c0b7c2e6d1b0e8c7e8c0a9f9b9c8d9e0f Mon Sep 17 00:00:00 2001 From: Karl Williamson <khw@cpan.org> Date: Sat, 20 Jul 2019 13:48:43 -0600 Subject: [PATCH] Avoid strtod with NULL in my_atof_infnan() This function is called with a NULL when called from toke.c when there is an error. This caused a coredump on some platforms. Signed-off-by: Your Name <your.email@example.com> --- numeric.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/numeric.c b/numeric.c index 1f7c0f0..a7e1a2a 100644 --- a/numeric.c +++ b/numeric.c @@ -1300,7 +1300,7 @@ S_my_atof_infnan(pTHX_ const char * const s, const STRLEN len, NV *value) if (len) { /* some sort of garbage, but maybe number in string */ *value = my_atof(s); - } else { + } else if (s) { char *endp; const char * const fake = s + len; nv = Perl_strtod(fake, &endp); -- 2.25.1
  1. 清理并重新构建:
make O=output/rockchip_rk3568 host-perl-dirclean

方案二:升级Perl版本如果补丁不奏效,可以考虑升级Perl版本。参考CSDN上的方案,下载新版Perl源码包并替换相关文件。

5. 第四个坑:live555版本过旧导致的时间函数冲突

错误信息显示:

gettimeofday(&timeNow, NULL); candidate: 'int gettimeofday(timeval*, int*)'

解决方案:更新live555到稳定版本

# 修改版本号 sed -i 's/LIVE555_VERSION = .*/LIVE555_VERSION = 2023.01.19/' package/live555/live555.mk # 更新下载地址 sed -i 's|LIVE555_SITE = .*|LIVE555_SITE = https://download.videolan.org/pub/contrib/live555|' package/live555/live555.mk # 更新源码包名称 sed -i 's/LIVE555_SOURCE = .*/LIVE555_SOURCE = live.$(LIVE555_VERSION).tar.gz/' package/live555/live555.mk # 清理旧版本 rm -rf dl/live.20* rm -rf output/rockchip_rk3568/build/live555-* rm package/live555/*.patch

6. 第五个坑:缺失libasan.so.5.0.0

错误信息:

/usr/bin/install: cannot stat '.../libasan.so.5.0.0': No such file or directory

解决方案:手动安装缺失的库

sudo apt update sudo apt install rpm2cpio # 下载并解压RPM包 wget https://repo.almalinux.org/almalinux/8/BaseOS/aarch64/os/Packages/libasan-8.5.0-24.el8_10.alma.1.aarch64.rpm rpm2cpio libasan-8.5.0-24.el8_10.alma.1.aarch64.rpm | cpio -idmv --directory=/path/to/SDK/.../sysroot/lib/

7. 第六个坑:库架构不匹配

错误信息:

ERROR: architecture for "/usr/lib/libod_share.so" is "ARM", should be "AArch64"

解决方案:调整Buildroot配置

  1. 进入配置菜单:
cd buildroot make menuconfig
  1. 导航至:
Target packages └── Rockchip BSP packages └── rockchip common algorithm └── target platform [ ] Enable 32bit build # 取消选择 [X] Enable 64bit build # 选中
  1. 保存配置:
make savedefconfig

8. 第七和第八个坑:重复定义和缺失.br-external.mk

问题7:fwriter_buffer重复定义参考CSDN上的解决方案,通常需要检查头文件包含关系或修改编译选项。

问题8:recovery构建失败

make: *** No rule to make target '.../.br-external.mk'. Stop.

解决方案:手动创建所需文件结构

# 创建目录结构 mkdir -p output/rockchip_rk356x_recovery # 生成配置 make rockchip_rk356x_recovery_defconfig O=output/rockchip_rk356x_recovery # 创建空文件并设置权限 touch output/rockchip_rk356x_recovery/.br-external.mk chmod a+w output/rockchip_rk356x_recovery/.br-external.mk # 单独构建recovery make O=output/rockchip_rk356x_recovery

经过这一系列问题的解决,最终RK3568 SDK在WSL2 Ubuntu 22.04环境下成功编译。整个过程耗时约3天,大部分时间都花在了查找和解决这些构建问题上。希望这篇记录能帮助其他开发者节省宝贵的时间。

http://www.jsqmd.com/news/546861/

相关文章:

  • PCS双向储能变流器Buck - Boost闭环控制仿真复现之旅
  • 大模型小白必看:收藏这份极简AI-Agent学习指南,开启高薪职业新赛道!
  • 2026 AI决战:小白也能抓住大模型红利,速收藏!
  • 2026市政交通标志牌优质厂家推荐榜 - 优质品牌商家
  • 保姆级教程:用Python和pyrealsense2一键获取D435深度相机的内参矩阵
  • 例子-子网划分问题
  • EtherCAT模块化实战:如何为你的设备设计可热插拔的IO模块(基于SSC与0x4711示例)
  • 200元最好用的头戴式耳机是哪款?2026平价头戴式耳机排行榜10强品牌
  • Gemini 3 实战手册:从新手到高手的进阶之路
  • 2026年家用电器淘宝代运营公司排名前五权威深度测评 - 电商资讯
  • C++的std--ranges集合操作
  • Spring-AI大模型集成指南:轻松上手,收藏必备,小白也能玩转AI!
  • PowerShell网络管理实战:从基础配置到高级路由优化
  • 浒浦潮汐表查询2026-03-28
  • 高温寻北MEMS陀螺,为极端钻井打造精准指向
  • 嵌入式轻量级四元数姿态运算库:纯数学、零依赖、高实时
  • ngx_http_init_locations
  • 从零开始刷力扣1(9.回文数)
  • Qwen3.5-2B微调保姆级教程(非常详细),LoRA实战从入门到精通,收藏这一篇就够了!
  • 小白必看!收藏这份Agent思维链技术指南,轻松入门大模型世界
  • 【2026 Python安全强制新规倒计时】:不启用AOT内存隔离的生产服务将于12月1日起禁止接入等保三级系统
  • AI大模型人才缺口400万!小白也能逆袭?系统学习路线+免费资料全解析,速领收藏
  • 2026直流无刷电机应用白皮书工业自动化剖析:直流无框马达/空心杯电机/驱动器定制/驱动器开发/伺服轮毂电机/选择指南 - 优质品牌商家
  • 告别云服务账单焦虑:手把手教你用树莓派5+Docker自建n8n,打造个人专属RPA机器人
  • PNGdec:面向MCU的零malloc轻量PNG解码器
  • 魔方识别数据集不够用?我用Python+imgaug做了数据增强,YOLOv8识别率提升30%
  • 2026年专业深度测评:3C数码淘宝代运营排名前五企业权威榜单 - 电商资讯
  • 从‘偏差-方差’到一行代码:用NumPy/PyTorch五步实现GAE,附PPO实战避坑点
  • Claude更新:自主执行任务功能开启AI新体验
  • OpenClaw操作录制:ollama-QwQ-32B学习人工流程生成自动化脚本