PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
43.91k stars 7.8k forks source link

PaddleLite移动端部署用静态链接libpaddle_api_light_bundled.a时,总是提示找不到库函数 #1390

Closed ultrapower8 closed 3 years ago

ultrapower8 commented 3 years ago

/opt/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-g++ --sysroot=/opt/android-ndk-r17c/platforms/android-24/arch-arm64 -funwind-tables -no-canonical-prefixes -DANDROID_API=23 -fexceptions -frtti -std=c++11 -fopenmp -O3 -DNDEBUG -fPIE -pie -Wl,--gc-sections ocr_db_crnn.o crnn_process.o db_post_process.o clipper.o cls_process.o -o ocr_db_crnn ../../../third_party/opencv4.1.0/arm64-v8a/libs/libopencv_imgcodecs.a ../../../third_party/opencv4.1.0/arm64-v8a/libs/libopencv_imgproc.a ../../../third_party/opencv4.1.0/arm64-v8a/libs/libopencv_core.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/libtegra_hal.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibjpeg-turbo.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibwebp.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibpng.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibjasper.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibtiff.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/libIlmImf.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/libtbb.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/libcpufeatures.a ../../../cxx/lib/libpaddle_api_light_bundled.a /opt/android-ndk-r17c/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_static.a /opt/android-ndk-r17c/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++abi.a -latomic -pthread -ldl -llog -lz ocr_db_crnn.o: In function `loadModel(std::ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator >)': ocr_db_crnn.cc:(.text+0x28): undefined reference to paddle::lite_api::ConfigBase::ConfigBase(paddle::lite_api::PowerMode, int)' ocr_db_crnn.cc:(.text+0x5c): undefined reference topaddle::lite_api::MobileConfig::set_model_from_file(std::ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator > const&)' ocr_db_crnn.cc:(.text+0x68): undefined reference to `std::ndk1::shared_ptr paddle::lite_api::CreatePaddlePredictor(paddle::lite_api::MobileConfig const&)' ocr_db_crnn.o: In function `RunClsModel(cv::Mat, std::ndk1::shared_ptr, float)': ocr_db_crnn.cc:(.text+0xc60): undefined reference to paddle::lite_api::Tensor::Resize(std::__ndk1::vector<long, std::__ndk1::allocator<long> > const&)' ocr_db_crnn.cc:(.text+0xc80): undefined reference tofloat paddle::lite_api::Tensor::mutable_data(paddle::lite_api::TargetType) const' ocr_db_crnn.cc:(.text+0xd90): undefined reference to `float paddle::lite_api::Tensor::mutable_data(paddle::lite_api::TargetType) const' ocr_db_crnn.cc:(.text+0xd9c): undefined reference to long const* paddle::lite_api::Tensor::data<long>() const' ocr_db_crnn.o: In functionRunRecModel(std::ndk1::vector<std::ndk1::vector<std::ndk1::vector<int, std::ndk1::allocator >, std::ndk1::allocator<std::ndk1::vector<int, std::ndk1::allocator > > >, std::ndk1::allocator<std::ndk1::vector<std::ndk1::vector<int, std::ndk1::allocator >, std::ndk1::allocator<std::ndk1::vector<int, std::ndk1::allocator > > > > >, cv::Mat, std::ndk1::shared_ptr, std::ndk1::vector<std::ndk1::basic_string<char, std::__ndk1::char_traits, std::ndk1::allocator >, std::ndk1::allocator<std::ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator > > >&, std::ndk1::vector<float, std::ndk1::allocator >&, std::ndk1::vector<std::__ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator >, std::ndk1::allocator<std::ndk1::basic_string<char, std::__ndk1::char_traits, std::ndk1::allocator > > >, std::ndk1::shared_ptr, int)': ocr_db_crnn.cc:(.text+0x230c): undefined reference to paddle::lite_api::Tensor::Resize(std::__ndk1::vector<long, std::__ndk1::allocator<long> > const&)' ocr_db_crnn.cc:(.text+0x232c): undefined reference tofloat paddle::lite_api::Tensor::mutable_data(paddle::lite_api::TargetType) const' ocr_db_crnn.cc:(.text+0x2414): undefined reference to `long const paddle::lite_api::Tensor::data() const' ocr_db_crnn.cc:(.text+0x2424): undefined reference to paddle::lite_api::Tensor::lod() const' ocr_db_crnn.cc:(.text+0x2430): undefined reference topaddle::lite_api::Tensor::shape() const' ocr_db_crnn.cc:(.text+0x262c): undefined reference to float const* paddle::lite_api::Tensor::data<float>() const' ocr_db_crnn.cc:(.text+0x263c): undefined reference topaddle::lite_api::Tensor::shape() const' ocr_db_crnn.cc:(.text+0x2648): undefined reference to paddle::lite_api::Tensor::lod() const' ocr_db_crnn.o: In functionRunDetModel(std::ndk1::shared_ptr, cv::Mat, std::ndk1::map<std::ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator >, double, std::ndk1::less<std::__ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator > >, std::ndk1::allocator<std::ndk1::pair<std::ndk1::basic_string<char, std::ndk1::char_traits, std::__ndk1::allocator > const, double> > >)': ocr_db_crnn.cc:(.text+0x37dc): undefined reference to `paddle::lite_api::Tensor::Resize(std::ndk1::vector<long, std::__ndk1::allocator > const&)' ocr_db_crnn.cc:(.text+0x37fc): undefined reference to float* paddle::lite_api::Tensor::mutable_data<float>(paddle::lite_api::TargetType) const' ocr_db_crnn.cc:(.text+0x39a4): undefined reference tofloat const* paddle::lite_api::Tensor::data() const' ocr_db_crnn.cc:(.text+0x39c0): undefined reference to `paddle::lite_api::Tensor::shape() const' collect2: error: ld returned 1 exit status

ultrapower8 commented 3 years ago

不同编译器GCC、Clang编译过的静态库貌似不能混用