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

linux环境安装qnn_sdk 采坑记录

这里主要是介绍 Qualcomm AI Engine Direct SDK,高通新的AI模型推理框架,又名QNN,本文是记录在Linux上搭建qnn可以运行的软件环境。如果是wsl的话,请确认一定要是为wsl2, wsl1走到最后是不能成功的。

QNX sdk 链接。

https://code.qualcomm.com/nextev-usa-inc/automotive-ai-sdk-for-qualcomm-neural-networks-zip-2-0_qti-tools_oem/tree/r23104.2

一、linux上环境的配置

1.1 基础软件环境说明

注意: 这里测试python3.8故下载qnn==2.20(及ubuntu20)。2.22以上需要python3.10和ubuntu22环境,经过测试ubuntu22环境很重要,后面会有一些底层环境受到Ubuntu版本的限制。

环境采坑记录:

  1. 在wsl1 使用的是ubuntu22的环境,python3.10 创建虚拟环境但是在使用check-python-dependece的时候,却提示需要python3.8, 所以又创建了python3.8的虚幻环境,但是在高通环境安装qpm的时候出现了, 所以需要升级wsl2.官网上又提到要在wsl2的环境运行。所以转战linux 服务器上配置。

解决:a. 转战服务器 b. 升级wsl1到wsl2 c. 忽视错误继续尝试。

System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down

1. 选择了在服务器上运行,python3.8 和ubuntu20.04.3的环境进行运行, 但是运行qnn-net-run 的时候出现了下面的的库找不到。

qnn-net-run: error while loading shared libraries: libunwind.so.1: cannot open shared object file: No such file or directory。

原因分析:注意: 这里测试python3.8故下载qnn==2.20(及以下)。2.22以上需要python3.10和ubuntu22环境,经过测试ubuntu22环境很重要,后面会有一些底层环境受到Ubuntu版本的限制。

使用的qnn 是2.27的版本。

解决:1. 解决libunwind.so.1库的问题,那么可能后续还有其他的问题。2. 使用2.22以下的qnn sdk。

1.2 linux 服务器详细的配置过程

1. 获取qnn的SDK 软件包 官方网址可以下载,看自己需要的是linux还是android的。https://code.qualcomm.com/nextev-usa-inc/automotive-ai-sdk-for-qualcomm-neural-networks-zip-2-0_qti-tools_oem/tree/r23104.2

2. 安装pthon 依赖包

Sudo apt-get update

sudo apt-get install python3.10 python3-distutils libpython3.10 ubuntu 22.0以上使用python3.10

sudo add-apt-repository ppa:deadsnakes/ppa 可以指定安装源也可以不指定,看自己的环境。

sudo apt-get update

sudo apt-get install python3.8

3. 配置sdk的环境变量

export QNN_SDK_ROOT=/home/shengqing.liu/qnn_sdk-2-27

export QNN_SDK_ROOT=/home/lsq/qnn/qnn_sdk_tool/qaisw-2-27

source ${QNN_SDK_ROOT}/bin/envsetup.sh

这样子可以永久保存,打开新的命令终端也可以正常的加载环境变量。

echo 'export QNN_SDK_ROOT="/home/shengqing.liu/qnn_sdk-2-27"' >> ~/.bashrc

echo 'export PATH="${QNN_SDK_ROOT}:${PATH}"' >> ~/.bashrc

source ~/.bashrc

这种表示配置ok

4. 配置python虚拟环境

这个按照官网配置python3.10, 但是运行环境check的时候,提示需要的环境是3.8. 所以安装3.8的Python虚拟镜像。

sudo apt-get install python3.8-venv

sudo python3.8 -m venv qnn_vir

source bin/activate

5. 安装机器学习框架

Pip install tensorflow==2.8.0(Python3.8)

TensorFlow: tf-2.8.0

TFLite: tflite-2.3.0

PyTorch: torch-1.13.1

Torchvision: torchvision-0.14.1

ONNX: onnx-1.12.0

ONNX Runtime: onnxruntime-1.18.0

ONNX Simplifier: onnxsim-0.4.36 

5. 在虚拟环境中配置python依赖

python3 -m pip install --upgrade pip ------(可能会提示安装更新失败,所以失败的话可以增加权限

sudo chmod 77 -R qnnvir-3.8

${QNN_SDK_ROOT}/bin/check-python-dependency

6. 安装linux环境中依赖的库

sudo bash ${QNN_SDK_ROOT}/bin/check-linux-dependency.sh

查看是否配置成功

qnn-net-run --verison

出现报错:

qnn-net-run: error while loading shared libraries: libunwind.so.1: cannot open shared object file: No such file or directory。

原因: libunwind.so.1没有被找到。

查看是不是有这个库。 dpkg -l |grep libunwind

显示安装的是libunwind-dev和libunwind8, 但是需要的是libunwind.so.1 。

解决方法:

  1. 安装libunwind1 但是安装sudo apt install libunwind1 出现失败,找不到包。

A. 更新软件源 , 还是不能下载到。

  1. 进行libunwind8 ru链接, 不推荐, 但是有用

    # 查找已安装的库路径(通常为 /usr/lib/x86_64-linux-gnu/)
    find /usr/lib* -name "libunwind.so*"
    
    # 创建符号链接(假设找到 libunwind.so.8)
    sudo ln -s /usr/lib/x86_64-linux-gnu/libunwind.so.8 /usr/lib/x86_64-linux-gnu/libunwind.so.1
    
    # 更新动态链接器
    sudo ldconfig
    
    再次check环境
    
    ${QNN_SDK_ROOT}/bin/check-python-dependency
    
    sudo bash ${QNN_SDK_ROOT}/bin/check-linux-dependency.sh

问题:

x86_64-linux-clang/qnn-net-run: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by x86_64-linux-clang/qnn-net-run)

x86_64-linux-clang/qnn-net-run: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by x86_64-linux-clang/qnn-net-run)

解决:

查看系统的版本是2.3,系统是是ubuntu是20.4的,高版本的qnn(2.22以上) 需要22.04, 所以后面会出现一系列的系统问题。

手动安装glic-2.34

sudo apt-get install build-essential cmake make libtool autoconf git

mkdir -p $HOME/glibc-2.34
cd $HOME/glibc-2.34
wget http://ftp.gnu.org/gnu/libc/glibc-2.34.tar.gz
tar -xvzf glibc-2.34.tar.gz
cd glibc-2.34
mkdir build
cd build
../configure --prefix=$HOME/glibc-2.34-install
make -j$(nproc)
make install
安装在$HOME/glibc-2.34-install 目录。
加入临时的环境变量:

export LD_LIBRARY_PATH=$HOME/glibc-2.34-install/lib:$LD_LIBRARY_PATH
x86_64-linux-clang/qnn-net-run

如果可行,加入配置文件,永久生效。
echo 'export LD_LIBRARY_PATH=$HOME/glibc-2.34-install/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

再次check环境。

${QNN_SDK_ROOT}/bin/check-python-dependency

sudo bash ${QNN_SDK_ROOT}/bin/check-linux-dependency.sh

qnn_2.27 版本太高了,需要glibc-2.33以上,这个是和linux版本绑定的),手动安装没有用安装。

没办法切换qnn低版本,使用qnn_2.12版本,成功了。

7. 配置android sdk的路径和环境变量

官方文档说,如果是wsl的环境,那么android sdk 一定需要在home 目录下解压,放置在这里,也不知道真假,所以只能重新下载一个配置路径。

​
sudo wget https://dl.google.com/android/repository/android-ndk-r26c-linux.zip

echo 'export ANDROID_NDK_ROOT="/home/android-ndk-r26c"' >> ~/.bashrc

echo 'export PATH="${ANDROID_NDK_ROOT}:${PATH}"' >> ~/.bashrc

source ~/.bashrc

​

这样子表示设置android ndk OK了。

这里面有check 各个环境的指令。

envcheck -a. 全部成功。

到这里,qnn_sdk就算安装成功了。


http://www.kler.cn/a/589493.html

相关文章:

  • 事件驱动架构(EDA):微服务世界的未来趋势
  • LeetCode[206]反转链表
  • MySQL连接较慢原因分析及解决措施
  • C++基础 [五] - String的模拟实现
  • FlinkCDC 达梦数据库实时同步详解
  • java,poi,提取ppt文件中的文字内容
  • LLaMA-Factory微调sft Qwen2.5-VL-7B-Instruct
  • 【etcd】
  • 【通义千问】蓝耘智算 | 智启未来:蓝耘MaaS×通义QwQ-32B引领AI开发生产力
  • 本地部署DeepSeek-R1(Dify升级最新版本、新增插件功能)
  • 【嵌入式硬件】三款DCDC调试笔记
  • 【地图 Map】——8
  • C++进阶——AVL树的实现
  • FPGA中级项目3——IP核之时钟管理单元
  • [Linux]进程控制
  • 视频孪生技术赋能桥梁智慧化检测管理与数字化建设
  • android 后台下载任务,断点续传
  • 【数据分析】.loc和.iloc的应用2
  • 数据结构——串、数组和广义表
  • 【MM】2025投稿重点记录