Ubuntu20.04源码编译PaddleOCR2.4

一,下载PaddleOCR源码

git clone https://github.com/PaddlePaddle/PaddleOCR.git
git checkout release/2.4
cd PaddleOCR/deploy/cpp_infer/

二,编译PaddleOCR的推理工具

源码中提供的build.sh是不完整的,需要修改,例如,我的编译指令是在这里,

~/ocr/01/PaddleOCR/deploy/cpp_infer/tools/build.sh

OPENCV_DIR=/home/mc/opencv455/dev/
LIB_DIR=/home/mc/ocr/01/Paddle/build_cuda/paddle_inference_install_dir/
CUDA_LIB_DIR=/usr/local/cuda/lib64
CUDNN_LIB_DIR=/usr/local/cuda/lib64

BUILD_DIR=build
rm -rf ${BUILD_DIR}
mkdir ${BUILD_DIR}
cd ${BUILD_DIR}
cmake .. \
    -DPADDLE_LIB=${LIB_DIR} \
    -DWITH_MKL=ON \
    -DWITH_GPU=ON \
    -DWITH_STATIC_LIB=OFF \
    -DWITH_TENSORRT=OFF \
#    -DOPENCV_DIR=${OPENCV_DIR} \
    -DOpenCV_DIR=${OPENCV_DIR} \
    -DCUDNN_LIB=${CUDNN_LIB_DIR} \
    -DCUDA_LIB=${CUDA_LIB_DIR} \
#    -DTENSORRT_DIR=${TENSORRT_DIR} \

make -j

这里有好几个地方需要注意,

然后回到目录(该目录下有一个CMakeLists.txt文件),

/ocr/01/PaddleOCR/deploy/cpp_infer

执行下面的指令,

sudo ./tools/build.sh #执行完此脚本后会在./build文件夹下生成ocr_system可执行文件

这加上sudo权限是因为需要/usr/local下面的写入权限,生成之后你改一下权限就可以变成用户权限了,如下,

sudo chmod -cvR 777 build
 

三,编译过程中碰到的问题

(1)cp: 无法创建普通文件'/usr/lib/libmklml_intel.so': 权限不够

解决办法,

使用sudo权限,这个前面已经解释过了。

(2)没有规则可制作目标

 -- Build files have been written to: /home/mc/ocr/01/PaddleOCR/deploy/cpp_infer/build
make[2]: *** 没有规则可制作目标“/home/mc/ocr/01/Paddle/build_cuda/paddle/lib/libpaddle_inference.so”,由“ppocr” 需求。 停止。

解决办法,

检查你的路径,通常这个是由路径设置不对,找不到相关的库引起的。

(3)cc1plus: error: too many filenames given

cc1plus: error: too many filenames given.  Type cc1plus --help for usage
cc1plus: error: too many filenames given.  Type cc1plus --help for usage
cc1plus: error: too many filenames given.  Type cc1plus --help for usage
cc1plus: error: too many filenames given.  Type cc1plus --help for usage
cc1plus: fatal error: CMakeFiles/ppocr.dir/src/postprocess_op.cpp.d: 没有那个文件或目录
cc1plus: fatal error: CMakeFiles/ppocr.dir/src/ocr_rec.cpp.d: 没有那个文件或目录
compilation terminated.
compilation terminated.
cc1plus: error: too many filenames given.  Type cc1plus --help for usage
cc1plus: fatal error: CMakeFiles/ppocr.dir/src/main.cpp.d: 没有那个文件或目录
cc1plus: fatal error: CMakeFiles/ppocr.dir/src/ocr_det.cpp.d: 没有那个文件或目录
compilation terminated.
compilation terminated.
cc1plus: error: too many filenames given.  Type cc1plus --help for usage
cc1plus: fatal error: CMakeFiles/ppocr.dir/src/ocr_cls.cpp.d: 没有那个文件或目录
compilation terminated.
cc1plus: fatal error: CMakeFiles/ppocr.dir/src/utility.cpp.d: 没有那个文件或目录
compilation terminated.

解决办法,

找到

~/ocr/01/PaddleOCR/deploy/cpp_infer/CMakeLists.txt

将 "-o3" 改成 "-O3" 就可以了,修改后的结果如下,

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O3 ${FLAG_OPENMP} -std=c++11")

这应该是一个打字错误引起的,不理解为什么官方没有修正过来。

这个可参考:

c++ - CMake on linux givs error cc1plus: error: too many filenames given - Stack Overflow

go - Import C error in Golang: cc1.exe: error: too many filenames given - Stack Overflow

本文结束
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值