PaddleOCR C++编译出错解决方案

文章目录

  • 前言
  • 一、环境准备
    • 1、主要环境
    • 2、源码下载
    • 3、C++推理库下载
  • 二、报错信息
    • 1.静态库调用错误
    • 2.ld returned 1 exit status
  • 总结


前言

  最近,想尝试下PaddleOCR的C++推理,但是过程不如人所愿,除了很多问题,这里捡重点的说下吧!


一、环境准备

1、主要环境

这里的环境指的是我们GPU或者CPU要用的一些基础环境,比如CUDA、cudnn、trt等,这里我选择用官方的docker镜像,进去之后选择你想要的版本即可,建议比最新的版本倒退1-2个版本,这样比较稳定,懂得都懂,如下图:
PaddleOCR C++编译出错解决方案_第1张图片

2、源码下载

这里直接去github里下载源码即可。

3、C++推理库下载

这个你可以自己进行编译,但是要做好崩溃的准备,各种git超时,不过会科学上网的话也没啥大问题,我这里就直接去官方文档里找到自己对应的平台(如win或linux),这里选择版本时间注意搭配一、1里你选择的基础环境来进行选择,如下图:
PaddleOCR C++编译出错解决方案_第2张图片
在左上角选择版本,然后在选择平台,然后看自身是CPU还是GPU去选择对应的推理库即可。注意:数学库的话建议选择用MKL的。

二、报错信息

环境搭完后,启动docker,可以考虑把源码、推理库直接挂载过来,然后根据PaddleOCR/deploy/cpp_infer里的md文档一步一步来即可,编译过程中遇到的bug如下

1.静态库调用错误

报错如下图:
PaddleOCR C++编译出错解决方案_第3张图片
这里大概率是因为在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所致。正常编译结果如下:
PaddleOCR C++编译出错解决方案_第4张图片


总结

以上就是本篇的全部内容,如有问题,欢迎评论区指正。

你可能感兴趣的:(c++,人工智能,paddlepaddle,ocr,计算机视觉)