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

paddlerocr android demo 修改为静态链接库报错

Open thomaszheng opened this issue 3 years ago • 17 comments
trafficstars

下载官方提供paddlelite v2.10 静态链接库文件 libpaddle_api_light_bundled.a,修改原始demo中的动态链接库文件,并修改CMakeList.txt文件

add_library(
        # Sets the name of the library.
        libpaddle_api_light_bundled
        # Sets the library as a shared library.
        STATIC
        # Provides a relative path to your source file(s).
        IMPORTED)



set_target_properties(
        # Specifies the target library.
        libpaddle_api_light_bundled
        # Specifies the parameter you want to define.
        PROPERTIES
        IMPORTED_LOCATION
        ${PaddleLite_DIR}/cxx/libs/${ANDROID_ABI}/libpaddle_api_light_bundled.a
        # Provides the path to the library you want to import.
)

编译时报如下错误:

/src/main/cpp/../../../PaddleLite/cxx/libs/arm64-v8a/libpaddle_api_light_bundled.a(device_info.cc.o): In function `paddle::lite::bind_threads(std::__ndk1::vector<int, std::__ndk1::allocator<int> >)':
device_info.cc:(.text._ZN6paddle4lite12bind_threadsENSt6__ndk16vectorIiNS1_9allocatorIiEEEE+0x30): undefined reference to `omp_set_num_threads'
device_info.cc:(.text._ZN6paddle4lite12bind_threadsENSt6__ndk16vectorIiNS1_9allocatorIiEEEE+0xac): undefined reference to `__kmpc_fork_call'
/src/main/cpp/../../../PaddleLite/cxx/libs/arm64-v8a/libpaddle_api_light_bundled.a(device_info.cc.o): In function `.omp_outlined.':
device_info.cc:(.text..omp_outlined.+0x70): undefined reference to `__kmpc_for_static_init_4'
device_info.cc:(.text..omp_outlined.+0xbc): undefined reference to `__kmpc_for_static_fini'
/src/main/cpp/../../../PaddleLite/cxx/libs/arm64-v8a/libpaddle_api_light_bundled.a(device_info.cc.o): In function `paddle::lite::DeviceInfo::SetRunMode(paddle::lite_api::PowerMode, int)':
device_info.cc:(.text._ZN6paddle4lite10DeviceInfo10SetRunModeENS_8lite_api9PowerModeEi+0x1ec): undefined reference to `omp_set_num_threads'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

ps:v2.10动态链接库

thomaszheng avatar Jan 18 '22 03:01 thomaszheng

您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网文档常见问题历史Issue来寻求解答。祝您生活愉快~

Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the APIFAQ and Github Issue to get the answer.Have a nice day!

paddle-bot-old[bot] avatar Jan 18 '22 03:01 paddle-bot-old[bot]

静态库使用需要包含paddle_use_op.h 和 paddle_use_kernel.h 具体内容请查看C++文档:https://paddle-lite.readthedocs.io/zh/latest/user_guides/cpp_demo.html

chenjiaoAngel avatar Jan 18 '22 06:01 chenjiaoAngel

静态库使用需要包含paddle_use_op.h 和 paddle_use_kernel.h 具体内容请查看C++文档:https://paddle-lite.readthedocs.io/zh/latest/user_guides/cpp_demo.html

我搜了一下整个paddlelite的项目,自己编译还是官方提供的预编译的库,都没有这两个头文件的。

目前项目里面用的头文件是: image

thomaszheng avatar Jan 18 '22 09:01 thomaszheng

image 这两个头文件

chenjiaoAngel avatar Jan 18 '22 09:01 chenjiaoAngel

那就是头文件是正确的话,这个报错是什么原因呢?

thomaszheng avatar Jan 18 '22 09:01 thomaszheng

image 这个是openmp 错误,下载的是默认编好的静态库?带openmp 的库?

chenjiaoAngel avatar Jan 18 '22 09:01 chenjiaoAngel

下载的是官方文档中提供的这两个 image image

thomaszheng avatar Jan 18 '22 09:01 thomaszheng

image

这个是openmp 错误,下载的是默认编好的静态库?带openmp 的库?

官方提供的预编译的库是不是不包含openmp的功能,需要自己调整配置再重新编译吗?但是我看./lite/tools/build_android.sh好像没有关于openmp的配置

thomaszheng avatar Jan 19 '22 03:01 thomaszheng

openmp 默认是开启的,我本地也复现了这个case,已将问题反馈给框架同学,他们正在定位

chenjiaoAngel avatar Jan 19 '22 11:01 chenjiaoAngel

还遇到了一个问题想咨询一下看看你们这边有遇到过吗?就是debug签名的app 可以正常运行,但是release签名的app会报如下错误:

2022-01-17 14:54:32.478 26950-27265/? E/OCR_NDK: cpu_mode not found LITE_POWER_HIGH
    
    --------- beginning of crash
2022-01-17 14:54:32.482 26950-27265/? A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 27265 (RxCachedThreadS), pid 26950 (xxxxx)
2022-01-17 14:54:32.564 19002-19103/? E/ServiceScheduleManager: Enter loop()!!! is sync = 
2022-01-17 14:54:32.617 27268-27268/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2022-01-17 14:54:32.617 27268-27268/? A/DEBUG: Build fingerprint: 'Redmi/apollo/apollo:11/RKQ1.200826.002/V12.5.8.0.RJDCNXM:user/release-keys'
2022-01-17 14:54:32.617 27268-27268/? A/DEBUG: Revision: '0'
2022-01-17 14:54:32.617 27268-27268/? A/DEBUG: ABI: 'arm64'
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG: Timestamp: 2022-01-17 14:54:32+0800
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG: pid: 26950, tid: 27265, name: RxCachedThreadS  
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG: uid: 10081
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG: signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG:     x0  0000000000000000  x1  0000000000006a81  x2  0000000000000006  x3  00000078dcc237b0
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG:     x4  727245203a504d4f  x5  727245203a504d4f  x6  727245203a504d4f  x7  3a3030312320726f
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG:     x8  00000000000000f0  x9  3233ef60ac879a4f  x10 0000000000000000  x11 ffffffc0fffffbdf
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG:     x12 0000000000000001  x13 0a2e646574636574  x14 00000079d7bd7be2  x15 00000078dcc22980
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG:     x16 00000079d7bd3948  x17 00000079d7bb2390  x18 00000078dc7392f0  x19 0000000000006946
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG:     x20 0000000000006a81  x21 00000000ffffffff  x22 b4000078c4c97c40  x23 00000078dc73c600
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG:     x24 0000000000000010  x25 00000078dcc245b0  x26 0000000000000003  x27 0000007953636000
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG:     x28 0000000000000000  x29 00000078dcc23830
2022-01-17 14:54:32.619 27268-27268/? A/DEBUG:     lr  00000079d7b65aa0  sp  00000078dcc23790  pc  00000079d7b65acc  pst 0000000000001000
2022-01-17 14:54:32.620 27268-27268/? A/DEBUG: backtrace:
2022-01-17 14:54:32.620 27268-27268/? A/DEBUG:       #00 pc 0000000000089acc  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: a790cdbd8e44ea8a90802da343cb82ce)
2022-01-17 14:54:32.620 27268-27268/? A/DEBUG:       #01 pc 0000000000108a14  /data/app/~~bv8F_9K5ZTbAzlPK0_nL9Q==/com.xx.xxxxxxxxxx-oUT4eBy1JwtH3aAjdDnKHA==/lib/arm64/libpaddle_light_api_shared.so (__kmp_abort_process+44) (BuildId: 23bfa42b0177f94935fe6ce56bfb4325a350f071)
2022-01-17 14:54:32.622 608-608/? E/SELinux: avc:  denied  { find } for pid=5057 uid=10187 name=tethering scontext=u:r:vendor_systemhelper_app:s0:c512,c768 tcontext=u:object_r:tethering_service:s0 tclass=service_manager permissive=0

thomaszheng avatar Jan 19 '22 11:01 thomaszheng

openmp 默认是开启的,我本地也复现了这个case,已将问题反馈给框架同学,他们正在定位

@chenjiaoAngel 你好,请问这个问题定位到吗,后面会有计划处理吗?

thomaszheng avatar Mar 08 '22 10:03 thomaszheng

这边也遇到了同样的问题,请问这个问题解决了吗?

eternal-mind avatar Feb 02 '23 02:02 eternal-mind

@thomaszheng 请教一下,libpaddle_light_api_shared.so (__kmp_abort_process+44)这个问题解决了吗?能分享一下如何解决的吗

gcgongchao avatar Feb 15 '23 07:02 gcgongchao

没有的,后面我就没有再试了。 需要 @chenjiaoAngel 他们官方来解决

thomaszheng avatar Feb 15 '23 08:02 thomaszheng

@chenjiaoAngel 请问这个问题是什么原因导致的话,或者是哪个代码文件抛出的(我看看代码有没有办法规避掉 )?后期有计划解决吗?

gcgongchao avatar Feb 21 '23 03:02 gcgongchao

libpaddle_light_api_shared.so (__kmp_abort_process+44) 解决了吗

niuhaitaofeilong avatar Mar 24 '23 13:03 niuhaitaofeilong

可以检查下是不是手机开了省电模式,另外powermode也该成推荐的不绑核模式(3)试试

zhanghui43 avatar Feb 01 '24 04:02 zhanghui43