【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题(已解决)

server/2025/3/10 8:53:51/

经验分享】Ubuntu20.04编译RK3568 AI模型报错问题(已解决)

  • 前言
  • 问题现象
  • 问题分析
  • 解决方案
  • 总结


前言

这里使用的是Rockchip提供的rknn_model_zoo,https://github.com/airockchip/rknn_model_zoo/tree/main
此解决方案适用于Rockchip芯片在Ubuntu平台上编译报错问题。


问题现象

在使用如下命令编译生成开发板AI demo过程中出现报错

./build-linux.sh -t rk3568 -a aarch64 -d whisper

在这里插入图片描述

(p38) xingyun@ubuntu:~/software/rknn-toolkit/rknn_model_zoo$ ./build-linux.sh -t rk3568 -a aarch64 -d whisper
./build-linux.sh -t rk3568 -a aarch64 -d whisper
/home/xingyun/Downloads/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu
===================================
BUILD_DEMO_NAME=whisper
BUILD_DEMO_PATH=examples/whisper/cpp
TARGET_SOC=rk356x
TARGET_ARCH=aarch64
BUILD_TYPE=Release
ENABLE_ASAN=OFF
DISABLE_RGA=OFF
DISABLE_LIBJPEG=OFF
INSTALL_DIR=/home/xingyun/software/rknn-toolkit/rknn_model_zoo/install/rk356x_linux_aarch64/rknn_whisper_demo
BUILD_DIR=/home/xingyun/software/rknn-toolkit/rknn_model_zoo/build/build_rknn_whisper_demo_rk356x_linux_aarch64_Release
CC=/home/xingyun/Downloads/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
CXX=/home/xingyun/Downloads/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
===================================
-- 64bit
-- OpenCV_DIR=/home/xingyun/software/rknn-toolkit/rknn_model_zoo/examples/whisper/cpp/../../../3rdparty/opencv/opencv-linux-aarch64/share/OpenCV
-- OpenCV_LIBS=opencv_calib3dopencv_coreopencv_features2dopencv_imgcodecsopencv_imgprocopencv_video
-- Configuring done
-- Generating done
-- Build files have been written to: /home/xingyun/software/rknn-toolkit/rknn_model_zoo/build/build_rknn_whisper_demo_rk356x_linux_aarch64_Release
[ 50%] Built target audioutils
[ 50%] Built target fileutils
[ 50%] Built target imagedrawing
[ 66%] Built target imageutils
[ 75%] Linking CXX executable rknn_whisper_demo
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /home/xingyun/software/rknn-toolkit/rknn_model_zoo/3rdparty/libsndfile/Linux/aarch64/libsndfile.a(libsndfile_la-sndfile.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `stderr@@GLIBC_2.17' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /home/xingyun/software/rknn-toolkit/rknn_model_zoo/3rdparty/libsndfile/Linux/aarch64/libsndfile.a(libsndfile_la-sndfile.o)(.text+0x3b4): unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol `stderr@@GLIBC_2.17'
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/rknn_whisper_demo.dir/build.make:135: rknn_whisper_demo] Error 1
make[1]: *** [CMakeFiles/Makefile2:124: CMakeFiles/rknn_whisper_demo.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

问题分析

通过deepseek查询问题原因
在这里插入图片描述
deepseek要求我重新编译libsndfile.a
在这里插入图片描述
这里其实我被deepseek误导了,因为并不是只出现这一个第三方库文件异常的问题。所以不可能每一个都去重新编译一遍。


解决方案

重新看了下编译环境指导文档,终于找到了问题所在。其实很简单,就是编译工具链的版本不对,在ubuntu20.04直接安装的编译工具链和瑞芯微提供的编译工具链的版本号存在差异,导致编译异常。
在这里插入图片描述
所以正确做法就是使用瑞芯微Rockchip建议的交叉编译工具链版本

  1. 通过此链接下载NDK(建议下载r19c版本):https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip
    再重新编译,注意删除build路径,完美编译通过!
    在这里插入图片描述
    至此问题完美解决!

总结

通过本次解决方案的排查,可以看出DeepSeek并不能完全解决问题,它只能给出一些通用的建议,很有可能会把你带偏。最好还是把docs下的文档仔细看看,一般问题都能够解决。当然,DeepSeek对于我们开发者的帮助还是毋庸置疑的,我很欣赏一句话
在这里插入图片描述


http://www.ppmy.cn/server/173894.html

相关文章

WPS工具栏添加Mathtype加载项

问题描述: 分别安装好WPS和MathType之后,WPS工具栏没直接显示MathType工具,或者是前期使用正常,由于WPS更新之后MathType工具消失,如下图 解决办法 将文件“MathType Commands 2016.dotm”和“MathPage.wll”从Matht…

2025年Linux 安全与运维指南

目前,很多的站点和服务都运行在Linux服务器上。而Linux日常运维和安全也是管理员的基本要求。本文简单的为你介绍Linux系统中常用的命令和日志文件,能够帮助安全运维人员更有效地管理和保护Linux环境。 Linux基础命令 文件和目录操作 ls:列…

【网络】HTTP协议、HTTPS协议

HTTP与HTTPS HTTP协议概述 HTTP(超文本传输协议):工作在OSI顶层应用层,用于客户端(浏览器)与服务器之间的通信,B/S模式 无状态:每次请求独立,服务器不保存客户端状态(通过Cookie/Session扩展状态管理)。基于TCP:默认端口80(HTTP)、443(HTTPS),保证可靠传输。请…

推荐一些免费开源支持Vue3甘特图组件

文章目录 前言一、dhtmlxGantt二、frappe-gantt三、vue-ganttastic四、gantt-elastic五、v-gantt六、vue-gantt-schedule-timeline-calendar七、vue-gantt八、总结 前言 在现代项目管理和任务调度中,甘特图是一种非常实用的工具。它能够直观地展示任务的时间安排、…

行式数据库与列式数据库区别

列式数据库(Columnar Database)和行式数据库(Row-based Database)是两种不同的数据存储和检索方式,它们在数据组织、存储结构和适用场景上有显著区别。以下是对两者的详细对比: 1. 数据存储方式 行式数据库…

Linux:多线程(单例模式,其他常见的锁,读者写者问题)

目录 单例模式 什么是设计模式 单例模式介绍 饿汉实现方式和懒汉实现方式 其他常见的各种锁 自旋锁 读者写者问题 逻辑过程 接口介绍 单例模式 什么是设计模式 设计模式就是一些大佬在编写代码的过程中,针对一些经典常见场景,给定对应解决方案&…

【AVRCP SPEC】协议深入解析(1):从框架到数据单元

目录 一、AVRCP 协议框架 1.1 AV/C 命令 1.2 AVRCP 特定的 AV/C 命令 1.3 AVRCP 特定的浏览命令 二、定时器设置 三、协议数据单元(PDU)描述 3.1 PDU 格式概述 3.2 AVRCP 特定的 AV/C PDU 格式 3.3 AVRCP 特定的浏览 PDU 格式 四、总结 五、参…

浅谈 DeepSeek 对 DBA 的影响

引言: 在人工智能技术飞速发展的背景下,DeepSeek 作为一款基于混合专家模型(MoE)和强化学习技术的大语言模型,正在重塑传统数据库管理(DBA)的工作模式。通过结合其强大的自然语言处理能力、推理…