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

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

相关文章:

  • 直接插入排序
  • Python-nuitka
  • VMWare安装常见问题
  • 力扣HOT100之多维动态规划:5. 最长回文子串
  • 【AI News | 20250603】每日AI进展
  • 百万级临床试验数据库TrialPanorama发布!AI助力新药研发与临床评价迎来新基石
  • 如何在 DataGrip 中 连接 Databend
  • 迅为RK3588开发板RKLLM-Toolkit 环境搭建安装 Miniconda
  • 关于easyx头文件
  • 【MSCKF】UpdaterSLAM::delayed_init 和 FeatureInitializer::single_triangulation
  • BGP/MPLS IP VPN跨域解决方案
  • 如何轻松删除 Android 上的文件(3 种方法)
  • 永磁同步电机无速度算法--互补滑模观测器
  • 【高等数学】(1)映射
  • java复习 02
  • git stash介绍(贮藏、暂存)(临时保存当前工作目录中尚未提交的修改)
  • 对接系统外部服务组件技术方案
  • 第四章 4.IP Address (CCNA)
  • iptables常用命令
  • Gephi中的Isometric Layout 插件使用应该用什么数据格式
  • 企业系统培训平台/什么是白帽seo
  • 自助建站营销招商/国外网站seo免费
  • 深圳 网站开发公司电话/宁波seo快速优化教程
  • 视频网站点击链接怎么做/seo排名优化推广教程
  • 网站建设全视频教程下载/惠州网络营销
  • html做分页的网站/论文收录网站排名