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

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

文章目录

  • 前言
  • 一、环境准备
    • 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所致。正常编译结果如下:
在这里插入图片描述


总结

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

http://www.lryc.cn/news/95768.html

相关文章:

  • 89、简述RabbitMQ的架构设计
  • 63 | 图像处理
  • Stable Diffusion - 扩展 Roop 换脸 (Face Swapping) 插件的配置与使用
  • opencv实现替换证件照颜色
  • Elasticsearch【全文检索、倒排索引、应用场景、对比Solr、数据结构】(一)-全面详解(学习总结---从入门到深化)
  • 了解 3DS MAX 3D摄像机跟踪设置:第 2 部分
  • MySQL 判断 JSON 数组是否相等
  • uni-app个人中心
  • 只需3步,使用Stable Diffusion无限生产AI数字人视频
  • Mysql执行计划字段解释
  • Linux -- 线程
  • Android:实时更新时间
  • 24 鼠标常用事件
  • 了解 3DS MAX 3D摄像机跟踪设置:第 4 部分
  • nginx吞吐量调优
  • Python操作Excel文件,修改Excel样式(openpyxl)
  • AutoSAR系列讲解(实践篇)7.6-实验:配置SWCRTE(下)
  • 【node】使用express+gitee搭建图床,并解决防盗链问题
  • 蕨型叶分形
  • DevOps系列文章之 Git知识大全
  • JVM理论(六)执行引擎--垃圾回收
  • 贪心算法重点内容
  • 基于深度学习的高精度交通信号灯检测系统(PyTorch+Pyside6+YOLOv5模型)
  • 【3D目标检测】DSVT-2023CVPR
  • 我在VScode学Python(Python函数,Python模块导入)
  • 【目标跟踪】1、基础知识
  • 33. 搜索旋转排序数组
  • 接口自动化测试要做什么?8个步骤讲的明明白白(小白也能看懂系列)
  • Flutter 自定义 虚线 分割线
  • Java毕业设计—爱宠医院管理系统设计与实现