文章目录
- 前言
- 一、环境准备
- 1、主要环境
- 2、源码下载
- 3、C++推理库下载
- 二、报错信息
- 1.静态库调用错误
- 2.ld returned 1 exit status
- 总结
前言
最近,想尝试下PaddleOCR的C++推理,但是过程不如人所愿,除了很多问题,这里捡重点的说下吧!
一、环境准备
1、主要环境
这里的环境指的是我们GPU或者CPU要用的一些基础环境,比如CUDA、cudnn、trt等,这里我选择用官方的docker镜像,进去之后选择你想要的版本即可,建议比最新的版本倒退1-2个版本,这样比较稳定,懂得都懂,如下图:
2、源码下载
这里直接去github里下载源码即可。
3、C++推理库下载
这个你可以自己进行编译,但是要做好崩溃的准备,各种git超时,不过会科学上网的话也没啥大问题,我这里就直接去官方文档里找到自己对应的平台(如win或linux),这里选择版本时间注意搭配一、1里你选择的基础环境来进行选择,如下图:
在左上角选择版本,然后在选择平台,然后看自身是CPU还是GPU去选择对应的推理库即可。注意:数学库的话建议选择用MKL的。
二、报错信息
环境搭完后,启动docker,可以考虑把源码、推理库直接挂载过来,然后根据PaddleOCR/deploy/cpp_infer里的md文档一步一步来即可,编译过程中遇到的bug如下
1.静态库调用错误
报错如下图:
这里大概率是因为在CmakeLists.txt(或者tools/build.sh)中给定的cudnn目录下没有libcudnn.so,可以用如下命令查看libcudnn.so的具体位置:
find / -iname "*libcudnn.so*"
然后在CMakeLists.txt(或者tools/build.sh)中替换cudnn的路径即可。
2.ld returned 1 exit status
详细报错如下:
以下几个方案可以尝试下:
-
将CMakeLists.txt中
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -o3 ${FLAG_OPENMP} -std=c++11")
中的-o改为-O -
查看你的tools/build.sh中DWITH_GPU是否为ON,DWITH_STATIC_LIB是否为OFF。
这里,我感觉我是因为下了带GPU的镜像,然而在编译时将DWITH_GPU设置为了OFF所致。正常编译结果如下:
总结
以上就是本篇的全部内容,如有问题,欢迎评论区指正。