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

WSL2 + RK3568 SDK 编译踩坑笔记


💻 基础配置

项目配置
Ubuntu版本22.04
CPU核心20
内存8G
交换空间4G

⚠️ 以下所有问题基于如下前提:
✅ 依赖已安装,dl 包已解压,SDK 已完整同步
🚨 错误发生在执行 build.sh all 过程中


🧨 问题列表与解决方案


❌ 问题1:缺失 Python2

ERROR: No python2
ERROR: Running build_uboot failed!
...

✅ 解决方法:

sudo apt update
sudo apt install python2

❌ 问题2:.config 文件缺失,Buildroot 无法构建

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

✅ 解决方法:

cd /path/to/SDK/.../buildroot
make O=output/rockchip_rk3568 rockchip_rk3568_defconfig
ls output/rockchip_rk3568/
# 应包含:.config、.br-external.mk、Makefile 等文件

❌ 问题3:Perl 构建崩溃(Segfault)+ strtod 报错

✳️ 该问题是 Perl 5.26.1 的已知 bug,GCC 10+ 编译器更易触发。

错误日志(节选):

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

✅ 方法一:添加补丁(部分环境失败)
  1. 创建补丁文件:
cd buildroot/package/perl
mkdir -p patches
nano patches/0001-fix-null-pointer-strtod.patch
  1. 补丁内容(点击展开):
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

参考:CSDN 博客链接

  • 替换 perl.mkperl.hash

  • 下载源包:

    • perl-cross-1.6.2

    • perl-5.40.0

mv ./perl.mk ~/perl_bk.mk
mv ./perl.hash ~/perl_bk.hash
nano ./perl.mk
nano ./perl.hash

✅ 将新版包放入 dl 目录


❌ 问题4:live555 版本过旧导致冲突(gettimeofday 重定义)

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

✅ 解决方法:更换 live555 至稳定版本 2023.01.19

# 修改版本
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

❌ 问题5:缺失 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 rpm2cpiowget 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/

❌ 问题6:库架构错误(libod_share.so 是 ARM 而非 AArch64)

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

✅ 解决方法:

cd buildroot
make menuconfig

📌 定位到:

Target packages
└── Rockchip BSP packages└── rockchip common algorithm└── target platform[ ] Enable 32bit build   ← 取消[X] Enable 64bit build   ← 勾选

🔒 可选保存配置:

make savedefconfig

❌ 问题7:fwriter_buffer 重复定义(额外记录)

参考文章:CSDN 博客


❌ 问题8:recovery 构建失败(缺失 .br-external.mk

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

✅ 解决步骤:

  1. 手动创建目录结构
mkdir -p output/rockchip_rk356x_recovery
  1. 生成配置
make rockchip_rk356x_recovery_defconfig O=output/rockchip_rk356x_recovery
  1. 创建空文件并授权
touch output/rockchip_rk356x_recovery/.br-external.mk
chmod a+w output/rockchip_rk356x_recovery/.br-external.mk
  1. 单独构建 recovery
make O=output/rockchip_rk356x_recovery
http://www.xdnf.cn/news/11604.html

相关文章:

  • 《网瘾战争》如此震撼之作,不看枉为国人
  • 软件界面原型设计工具 Desktop 腾讯贡献的免费软件 UID UI Designer
  • Apache Ant
  • windows server 2003序列号
  • qq的一些代码
  • Qt实战-简单的点名程序和抽奖程序
  • 找不到minidump.dmp文件
  • C运行时库(C Run-time Library)详解
  • 各大搜索引擎提交网站的入口地址
  • ⭐️最全面的Windows Vista原版系统ISO镜像下载
  • 最好用的六款虚拟机软件
  • 【谨慎学习】手把手教你破解网站管理后台帐号密码
  • 校内和海内的异同
  • 48.网络安全渗透测试—[穷举篇11]—[webshell密码破解(asp/aspx/php)]
  • 飞信WebService接口
  • python 图片生成视频_python--通过cv2多张图片生成视频
  • mathematica 7.0 破解注册安装全过程
  • 电脑怎么隐藏文件夹?这样做,快速搞定!
  • ViewState 解码工具
  • Java加密技术
  • Java员工信息管理系统(源码+开题)
  • 中移在线2020春季校招java开发岗面经
  • QQ病毒——天眼查询系统
  • 《鬼武者》全攻略
  • 整理38款国外的一些免费虚拟主机,云计算,看看你使用过哪几个
  • [附源码]PHP计算机毕业设计大米科技手机网站(程序+LW)
  • 黑客口中的肉鸡是什么?
  • 手把手教你设置代理服务器IP地址
  • 大学生网页设计制作作业实例代码 (前端网页源码,建议收藏) HTML+CSS+JS
  • 就这样,打造一个实用的Ubuntu(转自论坛,略加修改)