(.venv) root@N6:/home/projects/rknntl# python demo.py I rknn-toolkit2 version: 2.3.0 --> Loading model --> Init runtime I target set by user is: rk3588 E init_runtime: Traceback (most recent call last): File "rknn/api/rknn_log.py", line 344, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper File "rknn/api/rknn_base.py", line 2472, in rknn.api.rknn_base.RKNNBase.init_runtime File "rknn/api/rknn_runtime.py", line 212, in rknn.api.rknn_runtime.RKNNRuntime.__init__ File "rknn/api/rknn_runtime.py", line 273, in rknn.api.rknn_runtime.RKNNRuntime._load_library File "/usr/lib/python3.10/ctypes/__init__.py", line 374, in __init__ self._handle = _dlopen(self._name, mode) OSError: /usr/lib64/librknnrt.so: cannot open shared object file: No such file or directory I ===================== WARN(0) ===================== E rknn-toolkit2 version: 2.3.0 Traceback (most recent call last): File "rknn/api/rknn_log.py", line 344, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper File "rknn/api/rknn_base.py", line 2472, in rknn.api.rknn_base.RKNNBase.init_runtime File "rknn/api/rknn_runtime.py", line 212, in rknn.api.rknn_runtime.RKNNRuntime.__init__ File "rknn/api/rknn_runtime.py", line 273, in rknn.api.rknn_runtime.RKNNRuntime._load_library File "/usr/lib/python3.10/ctypes/__init__.py", line 374, in __init__ self._handle = _dlopen(self._name, mode) OSError: /usr/lib64/librknnrt.so: cannot open shared object file: No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/projects/rknntl/demo.py", line 155, in <module> detector = YOLOv7_RKNN('/home/projects/N6_GRPC_AlgorithmService_dubug/model/weights/firesmoke_8_fp.rknn') # 替换为你的RKNN模型路径 File "/home/projects/rknntl/demo.py", line 19, in __init__ ret = self.rknn.init_runtime(target='rk3588') # 根据实际设备修改 File "/home/projects/.venv/lib/python3.10/site-packages/rknn/api/rknn.py", line 295, in init_runtime return self.rknn_base.init_runtime(target=target, device_id=device_id, File "rknn/api/rknn_log.py", line 349, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper File "rknn/api/rknn_log.py", line 95, in rknn.api.rknn_log.RKNNLog.e ValueError: Traceback (most recent call last): File "rknn/api/rknn_log.py", line 344, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper File "rknn/api/rknn_base.py", line 2472, in rknn.api.rknn_base.RKNNBase.init_runtime File "rknn/api/rknn_runtime.py", line 212, in rknn.api.rknn_runtime.RKNNRuntime.__init__ File "rknn/api/rknn_runtime.py", line 273, in rknn.api.rknn_runtime.RKNNRuntime._load_library File "/usr/lib/python3.10/ctypes/__init__.py", line 374, in __init__ self._handle = _dlopen(self._name, mode) OSError: /usr/lib64/librknnrt.so: cannot open shared object file: No such file or directory
时间: 2025-06-22 10:13:00 AIGC 浏览: 40
<think>我们正在解决RKNNToolkit2.3.0在运行时出现的`librknnrt.so`共享库文件加载失败的问题。错误信息通常为:`librknnrt.so:cannotopensharedobjectfile:Nosuchfileordirectory`根据引用[2][3][4]中提到的类似问题的解决方案,我们可以推断这类问题通常是由于系统无法找到共享库文件所致。解决思路主要围绕以下几个方面:1.**确认文件存在性**:首先检查`librknnrt.so`文件是否存在于系统中。2.**设置库文件路径**:通过环境变量`LD_LIBRARY_PATH`将包含该库的目录添加到链接器的搜索路径中。3.**创建符号链接**:如果库文件版本不匹配,可以创建符号链接指向正确的版本。4.**安装依赖**:检查是否完整安装了RKNNToolkit的运行时环境。###解决方案步骤:####步骤1:查找`librknnrt.so`文件位置通常情况下,RKNNToolkit安装后会在以下目录中存放共享库:-`/usr/lib/`-`/usr/local/lib/`-或者RKNNToolkit安装目录下的`lib`子目录(例如`/path/to/rknn-toolkit2/runtime/RK3588/`)使用以下命令在系统中搜索:```bashsudofind/-namelibrknnrt.so2>/dev/null```####步骤2:将库所在目录添加到环境变量假设找到的路径为`/path/to/rknn-toolkit2/runtime/RK3588/`,则可以将该路径添加到`LD_LIBRARY_PATH`中。**临时生效**(当前终端有效):```bashexportLD_LIBRARY_PATH=/path/to/rknn-toolkit2/runtime/RK3588/:$LD_LIBRARY_PATH```**永久生效**(添加到用户配置文件):1.打开`~/.bashrc`(或`~/.bash_profile`、`~/.zshrc`等,根据使用的shell决定)2.在文件末尾添加:```bashexportLD_LIBRARY_PATH=/path/to/rknn-toolkit2/runtime/RK3588/:$LD_LIBRARY_PATH```3.使配置生效:```bashsource~/.bashrc```####步骤3:创建符号链接(可选)如果系统期望的库文件名与现有文件名不一致(例如版本号不同),可以创建符号链接:```bashsudoln-s/path/to/librknnrt.so/usr/lib/librknnrt.so```####步骤4:更新动态链接库缓存执行以下命令刷新动态链接库缓存:```bashsudoldconfig```####步骤5:验证是否解决重新运行你的Python程序,检查错误是否消失。###常见问题排查1.**库文件架构不匹配**:确认库文件是否与系统架构匹配(如x86_64库不能在ARM上运行)。2.**权限问题**:确保当前用户有权限读取该库文件。3.**RKNNToolkit未正确安装**:重新安装RKNNToolkit,确保选择完整安装。###补充说明如果以上方法仍无法解决,请检查RKNNToolkit的安装文档,确认是否遗漏了运行时环境的安装步骤。对于Rockchip开发板(如RK3588),可能需要安装特定的Linux驱动[^1]。§§相关问题§§1.如何在Rockchip开发板上安装RKNN运行时环境?2.RKNNToolkit在不同操作系统上的安装差异?3.如何交叉编译RKNN模型用于嵌入式设备?</think>以下是针对 RKNN Toolkit 2.3.0 中 `librknnrt.so` 共享库加载失败的完整解决方案,参考了类似问题的处理方法[^2][^3][^4]:
### 问题原因分析
`librknnrt.so: cannot open shared object file` 错误通常由以下原因引起:
1. **库文件路径未正确配置** - 系统找不到库文件位置[^2][^3]
2. **环境变量未设置** - `LD_LIBRARY_PATH` 未包含 RKNN 库路径[^4]
3. **版本不匹配** - 安装的 RKNN Toolkit 版本与运行时库版本不一致
4. **权限问题** - 当前用户无权访问库文件
---
### 解决方案步骤
#### 步骤1:定位库文件位置
```bash
# 查找 librknnrt.so 实际安装位置
sudo find / -name librknnrt.so 2>/dev/null
# 典型安装路径(根据版本可能不同):
# /usr/lib/librknnrt.so
# /usr/local/lib/librknnrt.so
# ~/.local/lib/python3.x/site-packages/rknn/api/lib/librknnrt.so
```
#### 步骤2:设置环境变量(推荐方法)
在 `~/.bashrc` 或 `~/.zshrc` 中添加库路径:
```bash
# 添加以下内容(替换为实际路径)
export LD_LIBRARY_PATH=/path/to/rknn/lib:$LD_LIBRARY_PATH
# 应用更改
source ~/.bashrc
```
#### 步骤3:创建符号链接(备用方案)
```bash
# 创建系统级链接(需要sudo权限)
sudo ln -s /path/to/actual/librknnrt.so /usr/lib/librknnrt.so
# 更新链接缓存
sudo ldconfig
```
#### 步骤4:验证安装路径
检查 Python 包安装位置:
```bash
python3 -c "from rknn.api import RKNN; print(RKNN.__file__)"
```
查看输出路径中的 `lib` 子目录是否包含 `librknnrt.so`
#### 步骤5:检查版本兼容性
确保 Toolkit 版本与库版本一致:
```bash
# 检查 RKNN 版本
python3 -c "from rknn.api import RKNN; print(RKNN.__version__)"
# 检查库版本
strings /path/to/librknnrt.so | grep "rknn version"
```
#### 步骤6:重装 RKNN Toolkit(终极方案)
```bash
# 卸载旧版本
pip3 uninstall rknn-toolkit2
# 安装指定版本(推荐使用官方预编译包)
pip3 install rknn_toolkit2-1.x.x-cp3x-cp3x-linux_x86_64.whl
```
---
### 验证解决方案
创建测试脚本 `test_rknn.py`:
```python
from rknn.api import RKNN
try:
rknn = RKNN()
print("RKNN 运行时库加载成功!")
except Exception as e:
print(f"加载失败: {str(e)}")
```
运行验证:
```bash
python3 test_rknn.py
```
---
### 补充说明
1. **Docker 环境**:在容器内运行时,需在启动时添加卷映射:
```bash
docker run -v /path/to/host/librknnrt.so:/usr/lib/librknnrt.so ...
```
2. **多版本共存**:使用虚拟环境管理不同版本:
```bash
python3 -m venv rknn_env
source rknn_env/bin/activate
pip install rknn_toolkit2==x.x.x
```
3. **ARM 平台**:在 Rockchip 开发板上需安装预编译的 NPU 驱动包
> 如果问题仍未解决,请检查系统日志获取详细错误:
> ```bash
> dmesg | grep rknn
> ```
阅读全文