正点原子RK3568部署rknn模型显示`GLIBC_2.29‘ not found

本文描述了解决在rk3568平台上使用RKNN进行多线程案例时遇到的glibc_2.29版本缺失问题,详述了从下载glibc、配置、编译到修复链接的完整解决过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在正点原子的rk3568上跑RKNN多线程案例的时候发生了报错,报错信息如下:
在这里插入图片描述

./rknn_yolov5_demo: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by lib/librga.so)

关于这个问题网上的解决方案还是很多的,大多都是思路一样的,但是在一些细节上出现了问题,所以我将我成功解决的步骤记录了下来

二 解决方法💉💉💉:

1 cd到指定路径

cd /usr/local

2 下载glibc-2.29.tar.gz并解压

wget http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz
tar -zxvf glibc-2.29.tar.gz 
cd glibc-2.29

3 切换为root模式

sudo su

4 配置

mkdir build
cd build/
../configure --prefix=/usr/local --disable-sanity-checks

在这里插入图片描述

5 安装 (时间很长)

make -j8
make install

在这里插入图片描述

出现 Warning: ignoring configuration file that cannot be opened: /usr/local/etc/ld.so.conf: No such file or directory 不用担心,继续向后操作即可

完成后再/usr/loacl/lib下面生成了libm-2.29.so
在这里插入图片描述

6 将libm-2.29.so复制到前面报错缺少的地方

cp /usr/local/lib/libm-2.29.so /lib/aarch64-linux-gnu/

7 建立强制软连接

ln -sf libm-2.29.so libm.so.6

8 查看结果

strings /lib/aarch64-linux-gnu/libm.so.6 | grep GLIBC_

在这里插入图片描述
9 再次执行模型部署的代码,成功运行
在这里插入图片描述

### WARNING Ignoring invalid distribution -ip 的解决方案 当执行 `pip` 命令时,如果遇到类似于 `WARNING: Ignoring invalid distribution -ip` 的警告信息,这通常是因为之前的包安装过程中途被中断或未成功完成,从而在 Python 安装目录下的 `site-packages` 文件夹中留下了不完整的文件或临时文件。 以下是具体的解决方法: #### 方法一:清理残留文件并重新安装 前往 Python 安装路径中的 `site-packages` 目录(例如 `D:\software\python\python39\Lib\site-packages` 或其他指定位置),找到以波浪号 (`~`) 开头的文件或文件夹,并将其删除[^1]。这些文件通常是由于安装失败而遗留下来的中间状态文件。完成后运行以下命令重新安装所需的库: ```bash pip install --force-reinstall <package_name> ``` #### 方法二:手动移除无效分发记录 除了上述提到的清理操作外,还需要注意是否存在 `.dist-info` 类型的元数据文件损坏的情况。可以检查是否有类似的 `_ip.dist-info` 文件存在,并一同清除它们[^2]。之后再次尝试更新或者新装对应模块来验证问题是否得到彻底修复。 #### 方法三:升级Pip工具版本 有时旧版 pip 可能无法正确处理某些复杂场景下的依赖关系管理,因此建议先确保使用的 pip 是最新稳定发行版之一。通过下面这条指令来进行自我迭代升级过程: ```bash python -m pip install --upgrade pip setuptools wheel ``` 这样不仅可以减少此类错误发生的概率,还能提高整体工作效率[^4]。 以上三种方式均能够有效应对由中途停止引发的一系列连锁反应所造成的干扰现象——即所谓的“忽略非法发布”的告警消息。 ```python import shutil import os def remove_broken_distributions(site_packages_path): broken_prefixes = ['~', '_'] # Common prefixes for incomplete distributions try: entries = os.listdir(site_packages_path) for entry in entries: if any(entry.startswith(prefix) for prefix in broken_prefixes): full_entry_path = os.path.join(site_packages_path, entry) if os.path.isdir(full_entry_path): shutil.rmtree(full_entry_path) # Remove directories recursively. elif os.path.isfile(full_entry_path): os.remove(full_entry_path) # Delete individual files. except Exception as e: print(f"An error occurred while cleaning up {site_packages_path}: {str(e)}") # Example usage with a typical path on Windows systems remove_broken_distributions(r"D:\software\python\python39\Lib\site-packages") ``` 此脚本可以帮助自动化部分清理工作流程,适用于熟悉编程环境的技术人员快速排查同类隐患。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值