Paddle-Lite icon indicating copy to clipboard operation
Paddle-Lite copied to clipboard

paddlie-lite推理静态库链接后推理报错

Open renshujiajia opened this issue 10 months ago • 5 comments

为使您的问题得到快速解决,在建立 Issue 前,请您先通过如下方式搜索是否有相似问题: 历史 issue, FAQ 文档, 官方文档

建立 issue 时,为快速解决问题,请您根据使用情况给出如下信息:

  • 标题:简洁、精准描述您的问题,例如“ssd 模型转换报错”
  • 版本、环境信息:    1)Paddle Lite 版本:V2.12 inference_lite_lib.android.armv8.clang.c++_static.with_extra.tar.gz    2)Host 环境:Ubuntu20.04
  • 模型信息    1)模型名称 ch_PP-OCRv4_det_infer转nb 2)模型链接 官方检测模型
  • 复现信息:ndk20b编译C++程序,使用官方ppocr_command_line程序进行推理
  • 问题描述:若C++程序链接paddle-lite静态库,报错:'feed' is not supported, 若链接动态库,并将so库放在设备上,则不报错。链接静态库需要注意什么事项吗?我是直接:# target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/inference_lite_lib.android.armv8.clang.c++_static.with_extra/cxx/lib/libpaddle_api_light_bundled.a)方式连接的

renshujiajia avatar Apr 10 '24 07:04 renshujiajia

已收到您的issue,等内部同学看一下

lishicheng1996 avatar Apr 12 '24 04:04 lishicheng1996

没引用paddleop,spaddlekernels这几个头文件

xiebaiyuan avatar Apr 14 '24 02:04 xiebaiyuan

静态库一定要引用这三个头文件: #include "include/paddle_api.h" #include "include/paddle_use_kernels.h" #include "include/paddle_use_ops.h"

hong19860320 avatar Apr 17 '24 07:04 hong19860320

静态库一定要引用这三个头文件: #include "include/paddle_api.h" #include "include/paddle_use_kernels.h" #include "include/paddle_use_ops.h"

添加后报错变成了:(.text._ZN6paddle4lite3arm4math25conv_depthwise_5x5s2_int8IfEEvPT_PKaS7_PKfS9_biPfiiiiiiiiPNS0_7ContextILNS_8lite_api10TargetTypeE4EEE[_ZN6paddle4lite3arm4math25conv_depthwise_5x5s2_int8IfEEvPT_PKaS7_PKfS9_biPfiiiiiiiiPNS0_7ContextILNS_8lite_api10TargetTypeE4EEE]+0x2d4): undefined reference to __kmpc_fork_call' ../../3rdparty/inference_lite_lib.android.armv8.clang.c++_static.with_extra/cxx/lib/libpaddle_api_light_bundled.a(conv5x5s2_depthwise_int8.cc.o): In function .omp_outlined..1': conv5x5s2_depthwise_int8.cc:(.text..omp_outlined..1+0xb0): undefined reference to __kmpc_for_static_init_4' conv5x5s2_depthwise_int8.cc:(.text..omp_outlined..1+0x170): undefined reference to omp_get_thread_num' conv5x5s2_depthwise_int8.cc:(.text..omp_outlined..1+0x6b4): undefined reference to `__kmpc_for_static_fini' clang++: error: linker command failed with exit code 1 (use -v to see invocation) 请问你有遇到过吗

renshujiajia avatar Apr 17 '24 12:04 renshujiajia

看起来没有找到 OMP的符号,你需要重新编译一个没有 OMP 的 LITE 库。 https://github.com/PaddlePaddle/Paddle-Lite/blob/ddd8fd8ad2c0b5c412cca99a04f1a48a36104187/CMakeLists.txt#L66 ON 改成 OFF

hong19860320 avatar Apr 18 '24 07:04 hong19860320