OpenCV 3.4.1 Android SDK static libraries dependencies - android

EDIT 2: Found the correct order, back to using static libs
libavutil libavcodec libavformat libswresample libswscale dnn ml objdetect shape stitching superres videostab calib3d features2d highgui videoio imgcodecs ilmimf jpeg jasper png tiff webp video photo imgproc flann core tegra_hal log cpufeatures z
EDIT 1: I gave up on this, and compiled the big SHARED_LIBRARY libopencv_world.so.
I'm trying to configure an Android Studio React Native project using OpenCV to be built with AppCenter.
I'm working on a mac. Because an agent (mac OSX in my case) will be provisioned for me to build my project in the cloud, all the code and static libraries dependencies should come from the source repository. AFAIK I can't use find_package() in my case because of this serverless environment, right?
I've downloaded the OpenCV Android SDK which contains everything I need to link with the static libraries.
My problem is that I need the OpenCV static libraries to be properly ordered for the link phase to complete. I can't find a complete properly ordered list of those libraries. But I found a way to tell the linker to figure it out.
Here is where I am so far. First the CMakeLists.txt file:
cmake_minimum_required(VERSION 3.4.1)
# CMAKE_SOURCE_DIR : this is the directory which contains the top-level CMakeLists.txt, i.e. the top level source directory. In this case the andoid/app folder.
# set OpenCV Static Libraries Environment Variables
#set(OpenCV_STATIC_LIBS_DIR ${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI})
#set(OpenCV_STATIC_3RDPARTY_LIBS_DIR ${CMAKE_HOME_DIRECTORY}/src/opencv/3rdparty/libs/${ANDROID_ABI})
add_library(tbb
STATIC
IMPORTED)
add_library(highgui
STATIC
IMPORTED)
add_library(calib3d
STATIC
IMPORTED)
add_library(core
STATIC
IMPORTED)
add_library(dnn
STATIC
IMPORTED)
add_library(flann
STATIC
IMPORTED)
add_library(imgproc
STATIC
IMPORTED)
add_library(videoio
STATIC
IMPORTED)
add_library(imgcodecs
STATIC
IMPORTED)
add_library(features2d
STATIC
IMPORTED)
add_library(ml
STATIC
IMPORTED)
add_library(photo
STATIC
IMPORTED)
add_library(shape
STATIC
IMPORTED)
add_library(objdetect
STATIC
IMPORTED)
add_library(stitching
STATIC
IMPORTED)
set_target_properties(tbb
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/3rdparty/libs/${ANDROID_ABI}/libtbb.a)
set_target_properties(highgui
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_highgui.a)
set_target_properties(calib3d
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_calib3d.a)
set_target_properties(core
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_core.a)
set_target_properties(dnn
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_dnn.a)
set_target_properties(flann
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_flann.a)
set_target_properties(imgproc
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_imgproc.a)
set_target_properties(videoio
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_videoio.a)
set_target_properties(imgcodecs
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_imgcodecs.a)
set_target_properties(features2d
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_features2d.a)
set_target_properties(ml
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_ml.a)
set_target_properties(photo
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_photo.a)
set_target_properties(shape
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_shape.a)
set_target_properties(objdetect
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_objdetect.a)
set_target_properties(stitching
PROPERTIES
IMPORTED_LOCATION
${CMAKE_HOME_DIRECTORY}/src/opencv/staticlibs/${ANDROID_ABI}/libopencv_stitching.a)
# ROOT would be react-native-djinius/deps/djinni
#
set( ROOT "${CMAKE_SOURCE_DIR}/../../deps/djinni" )
# PROJECT_ROOT would be react-native-djinius
set( PROJECT_ROOT "${CMAKE_SOURCE_DIR}/../.." )
# SUPPORT_LIB_ROOT would be
set( SUPPORT_LIB_ROOT "${ROOT}/support-lib" )
file( GLOB JNI_CODE "../../generated-src/jni/*.cpp" )
file( GLOB PROJECT_CODE "${PROJECT_ROOT}/src/cpp/*.cpp" "${PROJECT_ROOT}/generated-src/cpp/*.cpp" )
file( GLOB PROJECT_HEADERS "${PROJECT_ROOT}/src/cpp/*.hpp" "${PROJECT_ROOT}/generated-src/cpp/*.hpp" )
file( GLOB DJINNI_CODE "${SUPPORT_LIB_ROOT}/cpp/*.cpp" "${SUPPORT_LIB_ROOT}/jni/*.cpp" )
file( GLOB DJINNI_HEADERS "${SUPPORT_LIB_ROOT}/cpp/*.hpp" "${SUPPORT_LIB_ROOT}/jni/*.hpp" )
include_directories(
"${SUPPORT_LIB_ROOT}/cpp"
"${SUPPORT_LIB_ROOT}/jni"
"${PROJECT_ROOT}/src/cpp"
"${PROJECT_ROOT}/generated-src/cpp"
"${CMAKE_SOURCE_DIR}/src/opencv"
)
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
${JNI_CODE}
${DJINNI_CODE}
${DJINNI_HEADERS}
${PROJECT_CODE}
${PROJECT_HEADERS}
)
# link addional static libraries
target_link_libraries(native-lib -Wl,--start-group tbb core imgproc imgcodecs videoio highgui video calib3d features2d objdetect dnn ml flann photo stitching -Wl,--end-group)
Basically, it finds nothing :(
I've tried removing
-Wl, --start-group ... -Wl,--endgroup
to only include the libraries and the result is the same.
Next is the output of the failed build (link part only):
error: undefined reference to 'cv::imencode(cv::String const&, cv::_InputArray const&, std::__ndk1::vector<unsigned char, std::__ndk1::allocator<unsigned char> >&, std::__ndk1::vector<int, std::__ndk1::allocator<int> > const&)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::interface7::internal::task_arena_base::internal_execute(tbb::interface7::internal::delegate_base&) const'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::task_group_context::is_group_execution_cancelled() const'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::interface5::internal::task_base::destroy(tbb::task&)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::task_group_context::~task_group_context()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::interface7::internal::task_arena_base::internal_terminate()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::interface7::internal::task_arena_base::internal_initialize()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::task_group_context::reset()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::task_group_context::reset()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::interface7::internal::task_arena_base::internal_execute(tbb::interface7::internal::delegate_base&) const'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::task_group_context::is_group_execution_cancelled() const'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::interface5::internal::task_base::destroy(tbb::task&)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::task_group_context::~task_group_context()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::interface7::internal::task_arena_base::internal_terminate()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::interface7::internal::task_arena_base::internal_initialize()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::task_group_context::reset()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(alloc.cpp.o):alloc.cpp:function tbb::flow::interface10::graph::~graph(): error: undefined reference to 'tbb::task_group_context::reset()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) [clone .part.10]: error: undefined reference to 'std::basic_ios<char, std::char_traits<char> >::clear(std::_Ios_Iostate)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::error(cv::Exception const&): error: undefined reference to '__android_log_print'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::TLSData<cv::(anonymous namespace)::ThreadID>::createDataInstance() const: error: undefined reference to '__itt_thread_set_name_ptr__3_0'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'ippicvGetCpuFeatures'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'ippicvInit'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'ippicvGetEnabledCpuFeatures'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'ippicviGetLibVersion'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'ippicvSetCpuFeatures'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::cerr'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ostream::put(char)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ostream::flush()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ctype<char>::_M_widen_init() const'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::cerr'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ostream::put(char)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ostream::flush()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ctype<char>::_M_widen_init() const'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::cerr'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ostream::put(char)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ostream::flush()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ctype<char>::_M_widen_init() const'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::__throw_bad_cast()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::__throw_bad_cast()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::__throw_bad_cast()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function cv::TLSDataContainer::getData() const: error: undefined reference to 'std::__throw_length_error(char const*)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function _GLOBAL__sub_I_system.cpp: error: undefined reference to 'std::ios_base::Init::Init()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(system.cpp.o):system.cpp:function _GLOBAL__sub_I_system.cpp: error: undefined reference to 'std::ios_base::Init::~Init()'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) [clone .part.46]: error: undefined reference to 'std::basic_ios<char, std::char_traits<char> >::clear(std::_Ios_Iostate)'
../../../../src/opencv/staticlibs/x86/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf(): error: undefined reference to 'vtable for std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >'
What is wrong with this approach?
Thanks for your help.

Related

opencv jni build failed by using ndk (error: undefined reference)

OpenCV version = 3.1.0
Dlib version = 19.1
Android NDK version = r21
I would like to build lib.so file for Android Studio by using Android NDK. However, it failed in the SharedLibrary and OpenCV involved in all errors. I checked my directory path and it does not have any mistake. Can anyone tell help me?
This is the tutorial that I followed: https://www.youtube.com/watch?v=ZjZHiPWBiYY&t=2192s
Application.mk:
NDK_TOOLCHAIN_VERSION := clang
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
APP_CPPFLAGS := -std=c++11 -frtti -fexceptions
APP_PLATFORM := android-16
APP_STL := c++_static
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := dlib
LOCAL_C_INCLUDES := $(LOCAL_PATH)/dlib
LOCAL_SRC_FILES += \
../$(LOCAL_PATH)/dlib//dlib/threads/threads_kernel_shared.cpp \
../$(LOCAL_PATH)/dlib/dlib/entropy_decoder/entropy_decoder_kernel_2.cpp \
../$(LOCAL_PATH)/dlib/dlib/base64/base64_kernel_1.cpp \
../$(LOCAL_PATH)/dlib/dlib/threads/threads_kernel_1.cpp \
../$(LOCAL_PATH)/dlib/dlib/threads/threads_kernel_2.cpp
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
include $(BUILD_STATIC_LIBRARY)
TOP_LEVEL_PATH := $(abspath $(LOCAL_PATH)/..)
$(info TOP Level Path: $(TOP_LEVEL_PATH))
EXT_INSTALL_PATH = $(TOP_LEVEL_PATH)/third_party
OPENCV_PATH = $(EXT_INSTALL_PATH)/opencv/jni
OPENCV_INCLUDE_DIR = $(OPENCV_PATH)/include
include $(CLEAR_VARS)
OpenCV_INSTALL_MODULES := on
OPENCV_CAMERA_MODULES := off
OPENCV_LIB_TYPE := STATIC
include $(OPENCV_PATH)/OpenCV.mk
LOCAL_MODULE := MyLibs
LOCAL_C_INCLUDES += \
$(OPENCV_INCLUDE_DIR)
LOCAL_SRC_FILES := com_example_opencvdlib_NativeClass.cpp
LOCAL_LDLIBS += -lm -llog -ldl -lz -ljnigraphics
LOCAL_CPPFLAGS += -fexceptions -frtti -std=c++11
LOCAL_STATIC_LIBRARIES += dlib
include $(BUILD_SHARED_LIBRARY)
Errors:
C:\Users\leech\Desktop\AndroidApp\generateLibs>ndk-build
TOP Level Path: C:/Users/leech/Desktop/AndroidApp/generateLibs
TOP Level Path: C:/Users/leech/Desktop/AndroidApp/generateLibs
TOP Level Path: C:/Users/leech/Desktop/AndroidApp/generateLibs
TOP Level Path: C:/Users/leech/Desktop/AndroidApp/generateLibs
[armeabi-v7a] Compile++ thumb: MyLibs <= com_example_opencvdlib_NativeClass.cpp
jni/com_example_opencvdlib_NativeClass.cpp:6:2: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
[armeabi-v7a] Compile++ thumb: dlib <= threads_kernel_shared.cpp
[armeabi-v7a] Compile++ thumb: dlib <= entropy_decoder_kernel_2.cpp
[armeabi-v7a] Compile++ thumb: dlib <= base64_kernel_1.cpp
[armeabi-v7a] Compile++ thumb: dlib <= threads_kernel_1.cpp
[armeabi-v7a] Compile++ thumb: dlib <= threads_kernel_2.cpp
[armeabi-v7a] StaticLibrary : libdlib.a
[armeabi-v7a] SharedLibrary : libMyLibs.so
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_imgproc.a(drawing.cpp.o):drawing.cpp:function std::vector<cv::PolyEdge, std::allocator<cv::PolyEdge> >::reserve(unsigned int): error: undefined reference to 'std::__throw_length_error(char const*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_imgproc.a(drawing.cpp.o):drawing.cpp:function std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > >::_M_fill_insert(__gnu_cxx::__normal_iterator<cv::Point_<int>*, std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > > >, unsigned int, cv::Point_<int> const&): error: undefined reference to 'std::__throw_length_error(char const*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_imgproc.a(drawing.cpp.o):drawing.cpp:function std::vector<CvSeq, std::allocator<CvSeq> >::_M_fill_insert(__gnu_cxx::__normal_iterator<CvSeq*, std::vector<CvSeq, std::allocator<CvSeq> > >, unsigned int, CvSeq const&): error: undefined reference to 'std::__throw_length_error(char const*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_imgproc.a(drawing.cpp.o):drawing.cpp:function std::vector<CvSeqBlock, std::allocator<CvSeqBlock> >::_M_fill_insert(__gnu_cxx::__normal_iterator<CvSeqBlock*, std::vector<CvSeqBlock, std::allocator<CvSeqBlock> > >, unsigned int, CvSeqBlock const&): error: undefined reference to 'std::__throw_length_error(char const*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(system.cpp.o):system.cpp:function _GLOBAL__sub_I_system.cpp: error: undefined reference to 'std::ios_base::Init::Init()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(system.cpp.o):system.cpp:function _GLOBAL__sub_I_system.cpp: error: undefined reference to 'std::ios_base::Init::~Init()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) [clone .part.39]: error: undefined reference to 'std::basic_ios<char, std::char_traits<char> >::clear(std::_Ios_Iostate)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf(): error: undefined reference to 'vtable for std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf(): error: undefined reference to 'vtable for std::basic_streambuf<char, std::char_traits<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<float>(cv::Mat const&): error: undefined reference to 'std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<float>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<float>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<float>(cv::Mat const&): error: undefined reference to 'std::string::_Rep::_S_empty_rep_storage'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<float>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_streambuf<char, std::char_traits<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<float>(cv::Mat const&): error: undefined reference to 'VTT for std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<float>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_ios<char, std::char_traits<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<double>(cv::Mat const&): error: undefined reference to 'std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream(std::_Ios_Openmode)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<double>(cv::Mat const&): error: undefined reference to 'std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<double>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<double>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<double>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_ios<char, std::char_traits<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<unsigned short>(cv::Mat const&): error: undefined reference to 'std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_ostringstream()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<unsigned short>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<unsigned short>(cv::Mat const&): error: undefined reference to 'VTT for std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<unsigned short>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_ios<char, std::char_traits<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<short>(cv::Mat const&): error: undefined reference to 'std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream(std::_Ios_Openmode)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<short>(cv::Mat const&): error: undefined reference to 'std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<short>(cv::Mat const&): error: undefined reference to 'std::ios_base::~ios_base()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<short>(cv::Mat const&): error: undefined reference to 'std::ostream::operator<<(short)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<short>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<short>(cv::Mat const&): error: undefined reference to 'VTT for std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::string cv::ocl::kerToStr<short>(cv::Mat const&): error: undefined reference to 'vtable for std::basic_ios<char, std::char_traits<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::setMaxReservedSize(unsigned int): error: undefined reference to 'std::__detail::_List_node_base::_M_unhook()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::setMaxReservedSize(unsigned int): error: undefined reference to 'std::__detail::_List_node_base::_M_unhook()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::release(_cl_mem*): error: undefined reference to 'std::__detail::_List_node_base::_M_unhook()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::release(_cl_mem*): error: undefined reference to 'std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::release(_cl_mem*): error: undefined reference to 'std::__detail::_List_node_base::_M_unhook()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::kernelToStr(cv::_InputArray const&, int, char const*): error: undefined reference to 'std::string::_Rep::_M_dispose(std::allocator<char> const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::Kernel::set(int, cv::ocl::Image2D const&): error: undefined reference to 'std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::vector<std::string, std::allocator<std::string> >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, std::string const&): error: undefined reference to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::vector<std::string, std::allocator<std::string> >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, std::string const&): error: undefined reference to 'std::string::_Rep::_M_dispose(std::allocator<char> const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::vector<std::string, std::allocator<std::string> >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, std::string const&): error: undefined reference to 'std::string::_Rep::_M_dispose(std::allocator<char> const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::vector<std::string, std::allocator<std::string> >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, std::string const&): error: undefined reference to 'std::string::_Rep::_M_dispose(std::allocator<char> const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::split(std::string const&, char, std::vector<std::string, std::allocator<std::string> >&): error: undefined reference to 'std::ios_base::ios_base()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::split(std::string const&, char, std::vector<std::string, std::allocator<std::string> >&): error: undefined reference to 'std::basic_ios<char, std::char_traits<char> >::init(std::basic_streambuf<char, std::char_traits<char> >*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::split(std::string const&, char, std::vector<std::string, std::allocator<std::string> >&): error: undefined reference to 'std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::_M_sync(char*, unsigned int, unsigned int)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::split(std::string const&, char, std::vector<std::string, std::allocator<std::string> >&): error: undefined reference to 'std::basic_ios<char, std::char_traits<char> >::init(std::basic_streambuf<char, std::char_traits<char> >*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::split(std::string const&, char, std::vector<std::string, std::allocator<std::string> >&): error: undefined reference to 'std::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::split(std::string const&, char, std::vector<std::string, std::allocator<std::string> >&): error: undefined reference to 'std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_istringstream()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::split(std::string const&, char, std::vector<std::string, std::allocator<std::string> >&): error: undefined reference to 'VTT for std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::split(std::string const&, char, std::vector<std::string, std::allocator<std::string> >&): error: undefined reference to 'vtable for std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >'
C:/android-ndk-r21/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::_Rb_tree<cv::ocl::Context::Impl::HashKey, std::pair<cv::ocl::Context::Impl::HashKey const, cv::ocl::Program>, std::_Select1st<std::pair<cv::ocl::Context::Impl::HashKey const, cv::ocl::Program> >, std::less<cv::ocl::Context::Impl::HashKey>, std::allocator<std::pair<cv::ocl::Context::Impl::HashKey const, cv::ocl::Program> > >::_M_insert_unique(std::pair<cv::ocl::Context::Impl::HashKey const, cv::ocl::Program> const&): error: undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function std::_Rb_tree<cv::ocl::Context::Impl::HashKey, std::pair<cv::ocl::Context::Impl::HashKey const, cv::ocl::Program>, std::_Select1st<std::pair<cv::ocl::Context::Impl::HashKey const, cv::ocl::Program> >, std::less<cv::ocl::Context::Impl::HashKey>, std::allocator<std::pair<cv::ocl::Context::Impl::HashKey const, cv::ocl::Program> > >::_M_insert_unique(std::pair<cv::ocl::Context::Impl::HashKey const, cv::ocl::Program> const&): error: undefined reference to 'std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function int cv::ocl::getStringInfo<int (*)(_cl_platform_id*, unsigned int, unsigned int, void*, unsigned int*), _cl_platform_id*>(int (*)(_cl_platform_id*, unsigned int, unsigned int, void*, unsigned int*), _cl_platform_id*, unsigned int, std::string&) [clone .constprop.272]: error: undefined reference to 'std::string::_M_mutate(unsigned int, unsigned int, unsigned int)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function int cv::ocl::getStringInfo<int (*)(_cl_platform_id*, unsigned int, unsigned int, void*, unsigned int*), _cl_platform_id*>(int (*)(_cl_platform_id*, unsigned int, unsigned int, void*, unsigned int*), _cl_platform_id*, unsigned int, std::string&) [clone .constprop.272]: error: undefined reference to 'std::string::assign(char const*, unsigned int)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::_findAndRemoveEntryFromReservedList(cv::ocl::CLBufferEntry&, unsigned int): error: undefined reference to 'std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::Context::Impl::setDefault(): error: undefined reference to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::Context::Impl::setDefault(): error: undefined reference to 'std::string::find(char const*, unsigned int, unsigned int) const'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function cv::ocl::OpenCLBufferPoolImpl::_allocateBufferEntry(cv::ocl::CLBufferEntry&, unsigned int): error: undefined reference to 'std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function _GLOBAL__sub_I_ocl.cpp: error: undefined reference to 'std::ios_base::Init::Init()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function _GLOBAL__sub_I_ocl.cpp: error: undefined reference to 'std::ios_base::Init::~Init()'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function tbb::internal::handle_perror(int, char const*): error: undefined reference to 'std::runtime_error::runtime_error(std::string const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::runtime_error::runtime_error(std::string const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::runtime_error::runtime_error(std::string const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::runtime_error::runtime_error(std::string const&)'
C:/Users/leech/Desktop/AndroidApp/generateLibs/third_party/opencv/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::invalid_argument::invalid_argument(std::string const&)'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [C:/android-ndk-r21/build//../build/core/build-binary.mk:725: obj/local/armeabi-v7a/libMyLibs.so] Error 1
Can anyone tell me what have I did wrong?

How to compile LLVM/Clang for Android?

I'm trying to compile LLVM/Clang 8.0.1 for Android with Cmake (since autotools i used before are no longer supported) on mac.
I'm using https://github.com/llvm/llvm-project.git.
In build dir i'm using the following configure script (followed manuals):
cmake ../llvm \
-DCMAKE_INSTALL_PREFIX=/Users/asmirnov/Library/Android/llvm_android_arm \
-DLLVM_ENABLE_PROJECTS=clang \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_THREADS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD="ARM;X86" \
-DLIBCLANG_BUILD_STATIC=ON \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_ENABLE_ZLIB=OFF \
\
-DCMAKE_CROSSCOMPILING=True \
-DLLVM_TABLEGEN=/Users/asmirnov/Library/Android/llvm/bin/llvm-tblgen \
-DCLANG_TABLEGEN=/Users/asmirnov/Documents/dev/src/llvm-project/build/bin/clang-tblgen \
-DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf \
-DLLVM_TARGET_ARCH=ARM \
-DBUILD_SHARED_LIBS=ON \
-DLLVM_ENABLE_PIC=False \
-DCMAKE_TOOLCHAIN_FILE=/Users/asmirnov/Library/Android/ndk/android-ndk-r20/build/cmake/android.toolchain.cmake
As you can see i'm using CMake toolchain file from Android NDK (20).
Also i've compiled it locally and passing LLVM_TABLEGEN and CLANG_TABLEGEN.
Configuration went successfully, but during the build i get the following errors:
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:27: error: undefined reference to 'llvm::Pass::~Pass()'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:33: error: undefined reference to 'llvm::errs()'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:34: error: undefined reference to 'llvm::errs()'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:34: error: undefined reference to 'llvm::Value::getName() const'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:34: error: undefined reference to 'llvm::raw_ostream::write_escaped(llvm::StringRef, bool)'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/include/llvm/Support/raw_ostream.h:149: error: undefined reference to 'llvm::raw_ostream::write(unsigned char)'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/include/llvm/Support/raw_ostream.h:174: error: undefined reference to 'llvm::raw_ostream::write(char const*, unsigned int)'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:45: error: undefined reference to 'llvm::Pass::~Pass()'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:51: error: undefined reference to 'llvm::errs()'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:52: error: undefined reference to 'llvm::errs()'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:52: error: undefined reference to 'llvm::Value::getName() const'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/lib/Transforms/Hello/Hello.cpp:52: error: undefined reference to 'llvm::raw_ostream::write_escaped(llvm::StringRef, bool)'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/include/llvm/PassSupport.h:98: error: undefined reference to 'llvm::PassRegistry::getPassRegistry()'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/include/llvm/PassSupport.h:98: error: undefined reference to 'llvm::PassRegistry::registerPass(llvm::PassInfo const&, bool)'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/include/llvm/PassSupport.h:98: error: undefined reference to 'llvm::PassRegistry::getPassRegistry()'
/Users/asmirnov/Documents/dev/src/llvm-project/llvm/include/llvm/PassSupport.h:98: error: undefined reference to 'llvm::PassRegistry::registerPass(llvm::PassInfo const&, bool)'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::~Pass()'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::getPassName() const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::print(llvm::raw_ostream&, llvm::Module const*) const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::FunctionPass::createPrinterPass(llvm::raw_ostream&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&) const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::FunctionPass::assignPassManager(llvm::PMStack&, llvm::PassManagerType)'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::preparePassManager(llvm::PMStack&)'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::FunctionPass::getPotentialPassManagerType() const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::getAnalysisUsage(llvm::AnalysisUsage&) const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::releaseMemory()'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::getAdjustedAnalysisPointer(void const*)'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::getAsImmutablePass()'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::getAsPMDataManager()'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::verifyAnalysis() const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello: error: undefined reference to 'llvm::Pass::dumpPassStructure(unsigned int)'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::~Pass()'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::getPassName() const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::print(llvm::raw_ostream&, llvm::Module const*) const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::FunctionPass::createPrinterPass(llvm::raw_ostream&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&) const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::FunctionPass::assignPassManager(llvm::PMStack&, llvm::PassManagerType)'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::preparePassManager(llvm::PMStack&)'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::FunctionPass::getPotentialPassManagerType() const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::releaseMemory()'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::getAdjustedAnalysisPointer(void const*)'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::getAsImmutablePass()'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::getAsPMDataManager()'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::verifyAnalysis() const'
CMakeFiles/LLVMHello.dir/Hello.cpp.o:Hello.cpp:vtable for (anonymous namespace)::Hello2: error: undefined reference to 'llvm::Pass::dumpPassStructure(unsigned int)'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/LLVMHello.so] Error 1
make[1]: *** [lib/Transforms/Hello/CMakeFiles/LLVMHello.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
Am i doing anything wrong? Is it LLVM/Clang bug? Any workaround?
I don't know if this is your only problem, but this is definitely wrong and could cause Clang to not find the right libraries:
-DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf
Android is arm-linux-androideabi$API_LEVEL. arm-linux-gnueabihf is a GNU/Linux target.
Yup, this requires some work arounds similar to this. Also use -DLLVM_DEFAULT_TARGET_TRIPLE="armv7a-linux-androideabi"

Undefined reference to a a lot of caffe2 libries

I experience the same error as has been described here: Android NDK make. Hundreds of "undefined reference error"s
However, after we use the solution we get another type of error:
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/stdexcept:136: error: undefined reference to 'std::logic_error::logic_error(char const*)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/streambuf:302: error: undefined reference to 'std::__ndk1::locale::~locale()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/streambuf:302: error: undefined reference to 'std::__ndk1::locale::~locale()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:683: error: undefined reference to 'std::__ndk1::ios_base::~ios_base()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:683: error: undefined reference to 'std::__ndk1::ios_base::~ios_base()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/stdexcept:136: error: undefined reference to 'std::logic_error::logic_error(char const*)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/streambuf:302: error: undefined reference to 'std::__ndk1::locale::~locale()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/streambuf:302: error: undefined reference to 'std::__ndk1::locale::~locale()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:683: error: undefined reference to 'std::__ndk1::ios_base::~ios_base()'
../../../../src/main/jniLibs/armeabi-v7a/libcaffe2.a(Device.cpp.o):Device.cpp:function virtual thunk to std::__ndk1::basic_ostringstream<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >::~basic_ostringstream(): error: undefined reference to 'std::__ndk1::ios_base::~ios_base()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:529: error: undefined reference to 'std::__ndk1::ios_base::clear(unsigned int)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:529: error: undefined reference to 'std::__ndk1::ios_base::clear(unsigned int)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ostream:955: error: undefined reference to 'std::__ndk1::ios_base::__set_badbit_and_consider_rethrow()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ostream:461: error: undefined reference to 'std::__ndk1::ios_base::getloc() const'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/__locale:212: error: undefined reference to 'std::__ndk1::locale::use_facet(std::__ndk1::locale::id&) const'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:756: error: undefined reference to 'std::__ndk1::ios_base::getloc() const'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/__locale:212: error: undefined reference to 'std::__ndk1::locale::use_facet(std::__ndk1::locale::id&) const'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:529: error: undefined reference to 'std::__ndk1::ios_base::clear(unsigned int)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ostream:472: error: undefined reference to 'std::__ndk1::ios_base::__set_badbit_and_consider_rethrow()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ostream:461: error: undefined reference to 'std::__ndk1::num_put<char, std::__ndk1::ostreambuf_iterator<char, std::__ndk1::char_traits<char> > >::id'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ostream:461: error: undefined reference to 'std::__ndk1::ctype<char>::id'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/istream:321: error: undefined reference to 'std::__ndk1::ios_base::getloc() const'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/__locale:212: error: undefined reference to 'std::__ndk1::locale::use_facet(std::__ndk1::locale::id&) const'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:529: error: undefined reference to 'std::__ndk1::ios_base::clear(unsigned int)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/streambuf:193: error: undefined reference to 'std::__ndk1::ctype<char>::id'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/istream:713: error: undefined reference to 'std::__ndk1::ios_base::getloc() const'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/__locale:212: error: undefined reference to 'std::__ndk1::locale::use_facet(std::__ndk1::locale::id&) const'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/istream:732: error: undefined reference to 'std::__ndk1::ios_base::__set_badbit_and_consider_rethrow()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/istream:730: error: undefined reference to 'std::__ndk1::num_get<char, std::__ndk1::istreambuf_iterator<char, std::__ndk1::char_traits<char> > >::id'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ostream:739: error: undefined reference to 'std::__ndk1::ios_base::__set_badbit_and_consider_rethrow()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ostream:737: error: undefined reference to 'std::__ndk1::ctype<char>::id'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:690: error: undefined reference to 'std::__ndk1::ios_base::init(void*)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/streambuf:311: error: undefined reference to 'std::__ndk1::locale::locale()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:690: error: undefined reference to 'std::__ndk1::ios_base::init(void*)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/streambuf:311: error: undefined reference to 'std::__ndk1::locale::locale()'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/stdexcept:146: error: undefined reference to 'std::logic_error::logic_error(char const*)'
../../../../src/main/jniLibs/armeabi-v7a/libcaffe2.a(Device.cpp.o):Device.cpp:typeinfo for std::__ndk1::basic_ios<char, std::__ndk1::char_traits<char> >: error: undefined reference to 'typeinfo for std::__ndk1::ios_base'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/stdexcept:136: error: undefined reference to 'std::logic_error::logic_error(char const*)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/ios:690: error: undefined reference to 'std::__ndk1::ios_base::init(void*)'
/home/augustinas/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/streambuf:311: error: undefined reference to 'std::__ndk1::locale::locale()'
We have built caffe2 from source and updated our application's CMakeLists.txt as follows:
cmake_minimum_required(VERSION 3.4.1)
add_library(
native-lib
SHARED
src/main/cpp/native-lib.cpp
)
find_library(
android-lib
android
)
include(AndroidNdkModules)
android_ndk_import_module_cpufeatures()
add_library(
caffe2
STATIC
IMPORTED
)
set_target_properties(
caffe2
PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_LIST_DIR}/src/main/jniLibs/${ANDROID_ABI}/libcaffe2.a
)
add_library(
thread_pool
STATIC
IMPORTED
)
set_target_properties(
thread_pool
PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_LIST_DIR}/src/main/jniLibs/${ANDROID_ABI}/libpthreadpool.a
)
add_library(
clog
SHARED
IMPORTED
)
set_target_properties(
clog
PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_LIST_DIR}/src/main/jniLibs/${ANDROID_ABI}/libclog.a
)
add_library(
protobuf
SHARED
IMPORTED
)
set_target_properties(
protobuf
PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_LIST_DIR}/src/main/jniLibs/${ANDROID_ABI}/libprotobuf.a
)
add_library(
NNPACK
STATIC
IMPORTED
)
set_target_properties(
NNPACK
PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_LIST_DIR}/src/main/jniLibs/${ANDROID_ABI}/libnnpack.a
)
include_directories( src/main/cpp )
find_library(
log-lib
log
)
target_link_libraries(
native-lib
-Wl,--whole-archive
caffe2
-Wl,--no-whole-archive
NNPACK
thread_pool
clog
protobuf
cpufeatures
${log-lib}
${android-lib})

How do I support c++11 in Opencv 3 Android NDK

Can you help me, please?
I am doing the next changes to support c++11 with opencv 3 in android NDK:
I change from APP_STL := gnustl_static to APP_STL := c++_static
Application.mk
APP_STL := c++_static
APP_CPPFLAGS := -std=c++11 -frtti -fexceptions
APP_ABI := armeabi armeabi-v7a mips x86 arm64-v8a x86_64 mips64
APP_PLATFORM := android-14
# use this to select gcc instead of clang
NDK_TOOLCHAIN_VERSION := 4.9
Android.mk
LOCAL_PATH := $(call my-dir)
LOCAL_PATH_LIB_DIR:=library/lib/classifier
include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include ../../../OpenCV-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_MODULE:= detection_based_tracker
LOCAL_SRC_FILES := DetectionBasedTracker_jni.cpp \
library/jniUtils.cpp \
${ LOCAL_PATH_LIB_DIR}/logic.cpp \
${ LOCAL_PATH_LIB_DIR}/logic2.cpp \
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS += -llog -ldl -lm -latomic -L$(LOCAL_PATH)/libs/armeabi
- L$(LOCAL_PATH)/libs/armeabi-v7a -L$(LOCAL_PATH)/libs/mips
-L$(LOCAL_PATH)/libs/x86 -L$(LOCAL_PATH)/libs/arm64-v8a
-L$(LOCAL_PATH)/libs/mips64
-L$(LOCAL_PATH)/libs/x86_64
LOCAL_CPPFLAGS += -ljnigraphics -D_LINUX -DBOOST_HAS_PTHREADS -fexceptions -std=c++11
-I$(LOCAL_PATH)/ -I$(LOCAL_PATH)/library/lib/pico/ I
LOCAL_CPP_FEATURES := exceptions rtti
APP_OPTIM := debug
include $(BUILD_SHARED_LIBRARY)
When I compile the Android app with Android NDK r10e. I have the next errores in the Log:
' [armeabi-v7a] SharedLibrary : libdetection_based_tracker.so
/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++
-Wl,-soname,libdetection_based_tracker.so -shared --sysroot=/android/sdk/ndk-bundle/platforms/android-8/arch-arm ./obj/local/armeabi-v7a/objs/detection_based_tracker/DetectionBasedTracker_jni.o
./obj/local/armeabi-v7a/objs/detection_based_tracker/detection-manager/jniUtils.o
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/liblibpng.a
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/liblibtiff.a
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/liblibjasper.a
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libIlmImf.a
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a
/android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/thumb/libc++_static.a
-lgcc -no-canonical-prefixes -march=armv7-a -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -L/android/sdk/ndk-bundle/platforms/android-8/arch-arm/usr/lib -lz -ldl -lm -llog -llog -ldl -lm -latomic -Ljni/libs/armeabi -Ljni/libs/armeabi-v7a -Ljni/libs/mips -Ljni/libs/x86 -Ljni/libs/arm64-v8a -Ljni/libs/mips64 -Ljni/libs/x86_64 -lc -lm -o ./obj/local/armeabi-v7a/libdetection_based_tracker.so
jni/detection-manager/lib/pico/uniqueness2.cpp:240: error: undefined
reference to 'cv::DescriptorMatcher::match(cv::_InputArray const&,
cv::_InputArray const&, std::__1::vector >&, cv::_InputArray const&) const'
jni/detection-manager/lib/pico/motiondetector.cpp:77: error: undefined
reference to 'cv::Subdiv2D::insert(std::__1::vector,
std::__1::allocator > > const&)'
jni/detection-manager/lib/counting-blobs/jniUtils.cpp:995: error:
undefined reference to 'cv::imwrite(cv::String const&, cv::_InputArray
const&, std::__1::vector > const&)'
jni/detection-manager/lib/counting-blobs/jniUtils.cpp:996: error:
undefined reference to 'cv::imwrite(cv::String const&, cv::_InputArray
const&, std::__1::vector > const&)'
jni/detection-manager/lib/counting-blobs/jniUtils.cpp:1004: error:
undefined reference to 'cv::imwrite(cv::String const&, cv::_InputArray
const&, std::__1::vector > const&)'
jni/detection-manager/lib/counting-blobs/jniUtils.cpp:1005: error:
undefined reference to 'cv::imwrite(cv::String const&, cv::_InputArray
const&, std::__1::vector > const&)'
jni/detection-manager/lib/counting-blobs/jniUtils.cpp:1153: error:
undefined reference to
'cv::DescriptorMatcher::knnMatch(cv::_InputArray const&,
cv::_InputArray const&, std::__1::vector >,
std::__1::allocator > > >&, int, cv::_InputArray const&,
bool) const'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_objdetect.a(cascadedetect.cpp.o):cascadedetect.cpp:function
cv::LBPEvaluator::setWindow(cv::Point_, int): error: undefined
reference to 'std::__throw_out_of_range(char const*)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_objdetect.a(cascadedetect.cpp.o):cascadedetect.cpp:function
cv::HaarEvaluator::setWindow(cv::Point_, int): error: undefined
reference to 'std::__throw_out_of_range(char const*)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_objdetect.a(cascadedetect.cpp.o):cascadedetect.cpp:function
cv::HaarEvaluator::computeChannels(int, cv::_InputArray const&):
error: undefined reference to 'std::__throw_out_of_range(char const*)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_objdetect.a(cascadedetect.cpp.o):cascadedetect.cpp:function
cv::LBPEvaluator::computeChannels(int, cv::_InputArray const&): error:
undefined reference to 'std::__throw_out_of_range(char const*)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_objdetect.a(cascadedetect.cpp.o):cascadedetect.cpp:function
std::vector >::resize(unsigned int, int):
error: undefined reference to 'std::__throw_length_error(char const*)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_objdetect.a(cascadedetect.cpp.o):cascadedetect.cpp:function
std::vector >::resize(unsigned int,
double): error: undefined reference to 'std::__throw_length_error(char
const*)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_objdetect.a(cascadedetect.cpp.o):cascadedetect.cpp:function
std::vector >::reserve(unsigned int):
error: undefined reference to 'std::__throw_length_error(char const*)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_objdetect.a(cascadedetect.cpp.o):cascadedetect.cpp:function
std::vector
::reserve(unsigned int): error: undefined reference to 'std::__throw_length_error(char const*)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_flann.a(miniflann.cpp.o):miniflann.cpp:function
cvflann::LshIndex >::getNeighbors(float const*,
cvflann::ResultSet&): error: undefined reference to
'std::__throw_bad_cast()'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_flann.a(miniflann.cpp.o):miniflann.cpp:function
cvflann::LshIndex >::getNeighbors(float const*,
cvflann::ResultSet&): error: undefined reference to 'std::cerr'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_flann.a(miniflann.cpp.o):miniflann.cpp:function
std::_Rb_tree > >,
std::_Select1st > > >, std::less,
std::allocator > > >
::_M_insert_unique_(std::_Rb_tree_const_iterator > >
, std::pair > > const&): error: undefined reference
to 'std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_flann.a(miniflann.cpp.o):miniflann.cpp:function
cvflann::AutotunedIndex >::buildIndex(): error:
undefined reference to 'std::basic_ostringstream, std::allocator
::basic_ostringstream(std::_Ios_Openmode)' ../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_flann.a(miniflann.cpp.o):miniflann.cpp:function
cvflann::AutotunedIndex >::buildIndex(): error:
undefined reference to 'std::basic_stringbuf, std::allocator >::str() const' .
/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld:
the vtable symbol may be undefined because the class is missing its
key function
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_flann.a(miniflann.cpp.o):miniflann.cpp:function
cvflann::AutotunedIndex >::buildIndex(): error:
undefined reference to 'vtable for std::basic_stringbuf, std::allocator >'
/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld:
the vtable symbol may be undefined because the class is missing its
key function
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
std::basic_stringbuf,
std::allocator >::~basic_stringbuf(): error: undefined reference
to 'vtable for std::basic_streambuf >'
/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld:
the vtable symbol may be undefined because the class is missing its
key function
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
std::basic_stringbuf,
std::allocator >::~basic_stringbuf(): error: undefined reference
to 'std::locale::~locale()'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
std::basic_stringbuf,
std::allocator >::~basic_stringbuf(): error: undefined reference
to 'std::string::_Rep::_S_empty_rep_storage'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
std::basic_stringbuf,
std::allocator >::~basic_stringbuf(): error: undefined reference
to 'vtable for std::basic_stringbuf,
std::allocator >'
/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld:
the vtable symbol may be undefined because the class is missing its
key function
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
std::basic_stringbuf,
std::allocator >::~basic_stringbuf(): error: undefined reference
to 'vtable for std::basic_streambuf >'
/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld:
the vtable symbol may be undefined because the class is missing its
key function
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
std::string cv::ocl::kerToStr(cv::Mat const&): error: undefined
reference to 'std::basic_ostringstream,
std::allocator >::basic_ostringstream(std::_Ios_Openmode)' .
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::find(char const*, unsigned int, unsigned int) const'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::_M_leak_hard()'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::basic_string, std::allocator
::basic_string(char const*, std::allocator const&)' ../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::basic_string, std::allocator
::basic_string(char const*, std::allocator const&)' ../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::basic_string, std::allocator
::basic_string(char const*, std::allocator const&)' ../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::_M_leak_hard()'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::_M_leak_hard()'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::_M_leak_hard()'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::compare(char const*) const'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::compare(char const*) const'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::compare(char const*) const'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::find(char const*, unsigned int, unsigned int) const'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::compare(char const*) const'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::basic_ostream >& std::endl >(std::basic_ostream >&)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::basic_ostream >& std::endl >(std::basic_ostream >&)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::basic_ostream >& std::endl >(std::basic_ostream >&)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::basic_ostream >& std::endl >(std::basic_ostream >&)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::assign(std::string const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::Context::Impl::setDefault(): error: undefined reference to
'std::string::assign(std::string const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(ocl.cpp.o):ocl.cpp:function
cv::ocl::OpenCLBufferPoolImpl::_allocateBufferEntry(cv::ocl::CLBufferEntry&,
unsigned int): error: undefined reference to
'std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libIlmImf.a(half.cpp.o):half.cpp:function
operator>>(std::istream&, half&): error: undefined reference to
'std::istream& std::istream::_M_extract(float&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libIlmImf.a(ImfChannelList.cpp.o):ImfChannelList.cpp:function
Imf::ChannelList::operator[](char const*): error: undefined reference
to 'std::basic_stringstream,
std::allocator >::basic_stringstream(std::_Ios_Openmode)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libIlmImf.a(ImfChannelList.cpp.o):ImfChannelList.cpp:function
Imf::ChannelList::operator[](char const*): error: undefined reference
to 'std::basic_stringstream,
std::allocator >::~basic_stringstream()' .
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to 'std::out_of_range::out_of_range(std::string
const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to 'std::range_error::range_error(std::string
const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to 'std::range_error::range_error(std::string
const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to 'std::runtime_error::runtime_error(std::string
const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to 'std::runtime_error::runtime_error(std::string
const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to 'std::out_of_range::out_of_range(std::string
const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to 'std::out_of_range::out_of_range(std::string
const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to
'std::invalid_argument::invalid_argument(std::string const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to 'std::length_error::length_error(std::string
const&)'
../../../OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/libtbb.a(tbb_misc.cpp.o):tbb_misc.cpp:function
tbb::internal::throw_exception_v4(tbb::internal::exception_id): error:
undefined reference to 'std::out_of_range::out_of_range(std::string
const&)' collect2: error: ld returned 1 exit status make: ***
[obj/local/armeabi-v7a/libdetection_based_tracker.so] Error 1

Linking to ceres library on Android

I'm trying to compile and deploy ceres solver into an Android project.
I successfully compiled ceres (1.8.0 and 1.9.0, tried both), running ndk-build from the ceres jni folder.
Then, I use QtCreator to compile and deploy and Android project. It fails with the following error:
B:\Android\android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-g++ --sysroot=B:\Android\android-ndk-r10e/platforms/android-9/arch-arm/ -Wl,-soname,libtest_3rdparty_inprg_ceres.so -Wl,--no-undefined -Wl,-z,noexecstack -shared -o libtest_3rdparty_inprg_ceres.so main.obj logging.obj -LB:\Android\android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a -LB:\Android\android-ndk-r10e/platforms/android-9/arch-arm//usr/lib -lb:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/lib/android_armeabi-v7a/gcc-4.8/libceres.a -LC:/Qt/5.5/android_armv7/lib -lQt5Widgets -Lc:\utils\android\ndk/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a -Lc:\utils\android\ndk/platforms/android-9/arch-arm//usr/lib -lQt5Gui -lQt5Core -lGLESv2 -lgnustl_shared -llog -lz -lm -ldl -lc -lgcc
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/memory:3639: error: undefined reference to 'std::__1::__shared_weak_count::~__shared_weak_count()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/memory:4448: error: undefined reference to 'std::__1::__shared_weak_count::__release_shared()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:524: error: undefined reference to 'std::__1::ios_base::clear(unsigned int)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/memory:4154: error: undefined reference to 'std::__1::__shared_weak_count::__add_shared()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/memory:4154: error: undefined reference to 'std::__1::__shared_weak_count::__add_shared()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:734: error: undefined reference to 'std::__1::ios_base::getloc() const'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/__locale:174: error: undefined reference to 'std::__1::locale::use_facet(std::__1::locale::id&) const'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:734: error: undefined reference to 'std::__1::locale::~locale()'
B:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/jni/../internal/ceres/solver_impl.cc:123: error: undefined reference to 'std::__1::cout'
B:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/jni/../internal/ceres/solver_impl.cc:123: error: undefined reference to 'std::__1::ctype<char>::id'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:734: error: undefined reference to 'std::__1::ios_base::getloc() const'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/__locale:174: error: undefined reference to 'std::__1::locale::use_facet(std::__1::locale::id&) const'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:734: error: undefined reference to 'std::__1::locale::~locale()'
B:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/jni/../internal/ceres/solver_impl.cc:158: error: undefined reference to 'std::__1::cout'
B:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/jni/../internal/ceres/solver_impl.cc:158: error: undefined reference to 'std::__1::ctype<char>::id'
b:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/lib/android_armeabi-v7a/gcc-4.8/libceres.a(solver_impl.o):solver_impl.cc:vtable for std::__1::__shared_ptr_pointer<ceres::OrderedGroups<double*>*, std::__1::default_delete<ceres::OrderedGroups<double*> >, std::__1::allocator<ceres::OrderedGroups<double*> > >: error: undefined reference to 'std::__1::__shared_weak_count::__get_deleter(std::type_info const&) const'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ostream:508: error: undefined reference to 'std::__1::ios_base::getloc() const'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/__locale:174: error: undefined reference to 'std::__1::locale::use_facet(std::__1::locale::id&) const'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ostream:508: error: undefined reference to 'std::__1::locale::~locale()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:734: error: undefined reference to 'std::__1::ios_base::getloc() const'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/__locale:174: error: undefined reference to 'std::__1::locale::use_facet(std::__1::locale::id&) const'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:734: error: undefined reference to 'std::__1::locale::~locale()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:524: error: undefined reference to 'std::__1::ios_base::clear(unsigned int)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ostream:520: error: undefined reference to 'std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::id'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ostream:520: error: undefined reference to 'std::__1::ctype<char>::id'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:668: error: undefined reference to 'std::__1::ios_base::init(void*)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/streambuf:370: error: undefined reference to 'std::__1::locale::locale()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/__hash_table:1944: error: undefined reference to 'std::__1::__next_prime(unsigned int)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/__hash_table:1955: error: undefined reference to 'std::__1::__next_prime(unsigned int)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/__hash_table:1944: error: undefined reference to 'std::__1::__next_prime(unsigned int)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/__hash_table:1955: error: undefined reference to 'std::__1::__next_prime(unsigned int)'
b:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/lib/android_armeabi-v7a/gcc-4.8/libceres.a(schur_eliminator.o):schur_eliminator.cc:vtable for ceres::internal::SchurEliminator<2, 4, 8>: error: undefined reference to 'ceres::internal::SchurEliminator<2, 4, 8>::~SchurEliminator()'
b:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/lib/android_armeabi-v7a/gcc-4.8/libceres.a(schur_eliminator.o):schur_eliminator.cc:vtable for ceres::internal::SchurEliminator<2, 4, 8>: error: undefined reference to 'ceres::internal::SchurEliminator<2, 4, 8>::~SchurEliminator()'
b:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/lib/android_armeabi-v7a/gcc-4.8/libceres.a(schur_eliminator.o):schur_eliminator.cc:vtable for ceres::internal::SchurEliminator<2, 4, 8>: error: undefined reference to 'ceres::internal::SchurEliminator<2, 4, 8>::Init(int, ceres::internal::CompressedRowBlockStructure const*)'
b:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/lib/android_armeabi-v7a/gcc-4.8/libceres.a(schur_eliminator.o):schur_eliminator.cc:vtable for ceres::internal::SchurEliminator<2, 4, 8>: error: undefined reference to 'ceres::internal::SchurEliminator<2, 4, 8>::Eliminate(ceres::internal::BlockSparseMatrix const*, double const*, double const*, ceres::internal::BlockRandomAccessMatrix*, double*)'
b:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/lib/android_armeabi-v7a/gcc-4.8/libceres.a(schur_eliminator.o):schur_eliminator.cc:vtable for ceres::internal::SchurEliminator<2, 4, 8>: error: undefined reference to 'ceres::internal::SchurEliminator<2, 4, 8>::BackSubstitute(ceres::internal::BlockSparseMatrix const*, double const*, double const*, double const*, double*)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:3077: error: undefined reference to 'std::__1::__rs_get()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:2912: error: undefined reference to 'std::__1::__rs_default::operator()()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:2912: error: undefined reference to 'std::__1::__rs_default::operator()()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:3083: error: undefined reference to 'std::__1::__rs_default::~__rs_default()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:3077: error: undefined reference to 'std::__1::__rs_get()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:2912: error: undefined reference to 'std::__1::__rs_default::operator()()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:2912: error: undefined reference to 'std::__1::__rs_default::operator()()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:3083: error: undefined reference to 'std::__1::__rs_default::~__rs_default()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:3077: error: undefined reference to 'std::__1::__rs_get()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:3083: error: undefined reference to 'std::__1::__rs_default::~__rs_default()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:3077: error: undefined reference to 'std::__1::__rs_get()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/algorithm:3083: error: undefined reference to 'std::__1::__rs_default::~__rs_default()'
B:/dev/vobs_ext/libcpp/ceres/ceres-solver-1.9.0/jni/../internal/ceres/partitioned_matrix_view.cc:118: error: undefined reference to 'ceres::internal::PartitionedMatrixView<2, 4, 8>::PartitionedMatrixView(ceres::internal::BlockSparseMatrix const&, int)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:661: error: undefined reference to 'std::__1::ios_base::~ios_base()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:524: error: undefined reference to 'std::__1::ios_base::clear(unsigned int)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/streambuf:370: error: undefined reference to 'std::__1::locale::locale()'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:524: error: undefined reference to 'std::__1::ios_base::clear(unsigned int)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ostream:494: error: undefined reference to 'std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::id'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ostream:494: error: undefined reference to 'std::__1::ctype<char>::id'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ostream:728: error: undefined reference to 'std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::id'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ostream:676: error: undefined reference to 'std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::id'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:668: error: undefined reference to 'std::__1::ios_base::init(void*)'
B:/Android/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include/ios:668: error: undefined reference to 'std::__1::ios_base::init(void*)'
collect2.exe: error: ld returned 1 exit status
makefile:82: recipe for target 'libtest_3rdparty_inprg_ceres.so' failed
mingw32-make: *** [libtest_3rdparty_inprg_ceres.so] Error 1
13:17:13: Le processus "C:\Qt\Tools\mingw492_32\bin\mingw32-make.exe" s'est terminé avec le code 2.
Erreur lors de la compilation/déploiement du projet test_3rdparty_inprg_ceres (kit : Android for armeabi-v7a (GCC 4.9, Qt 5.5.0))
When executing step "Make"
13:17:13: Temps écoulé : 00:08.
I'm wondering if this could be due to ceres linking with c++ libraries statically, while my program links then dynamically....but have no clue how to solve this.
All libraries in your app SHOULD use the same STL runtime. But speaking about static libraries, they MUST use the same STL configuration. If you did not change cerces-solver/jni/Application.mk, it will expect APP_STL=c++_static. You can override this to use APP_STL=c++_shared, but you need a very good reason to change the way this external library is built. Much easier to switch your program to APP_STL=c++_static.
Edited by jpo38:
There are actually other things to be changed to have libceres.so be generated instead of libceres.a:
Add LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog in Android.mk
Replace include $(BUILD_STATIC_LIBRARY) by include $(BUILD_SHARED_LIBRARY) in Android.mk
Add -DCERES_BUILDING_SHARED_LIBRARY and -DCERES_RESTRICT_SCHUR_SPECIALIZATION (dunno why this second one helps, looks like Shur stuff does not like shared linkage) to LOCAL_CFLAGS in Android.mk
Then, the dynamic library is generated and may be used.

Categories

Resources