NDK build opencv error

荒凉一梦 提交于 2020-01-07 09:37:08

问题


I encountered an error using the NDK way to compile the source code, I will opencv source code copied to the jni directory, prepared Android.mk and Application.mk as well as the source file. Mk file, compiled the following error, please also Give some advice, thanks! ! !

Operating System: Ubuntu 17210 64bit opencv version: 3.3 android-ndk version: 14b

log:
[armeabi-v7a] Gdbserver      : [arm-linux-androideabi] libs/armeabi-v7a/gdbserver
[armeabi-v7a] Gdbsetup       : libs/armeabi-v7a/gdb.setup
[armeabi-v7a] Compile++ thumb: opencv <= perf_io_base64.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_addWeighted.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_convertTo.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_math.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_split.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_inRange.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_umat.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_stat.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_dft.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_abs.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_bitwise.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_cvround.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_compare.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_merge.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_mat.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_sort.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_main.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_norm.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_lut.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_reduce.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_dot.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_gpumat.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_arithm.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_minmaxloc.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_usage_flags.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_bufferpool.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_matop.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_gemm.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_arithm.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_dxt.cpp
[armeabi-v7a] Compile++ thumb: opencv <= perf_channels.cpp
[armeabi-v7a] Compile++ thumb: opencv <= cuda_host_mem.cpp
In file included from /home/jiangc/opencv3.3Ndk库/hello-jni/jni/core/src/cuda_host_mem.cpp:44:
In file included from /home/jiangc/opencv3.3Ndk库/hello-jni/jni/core/src/precomp.hpp:49:
In file included from /home/jiangc/opencv3.3Ndk库/hello-jni/jni/include/opencv2/core/utility.hpp:56:
In file included from /home/jiangc/opencv3.3Ndk库/hello-jni/jni/include/opencv2/core.hpp:52:
In file included from /home/jiangc/opencv3.3Ndk库/hello-jni/jni/include/opencv2/core/cvdef.h:189:
In file included from /home/jiangc/opencv3.3Ndk库/hello-jni/jni/include/opencv2/core/cv_cpu_dispatch.h:32:
In file included from /home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/emmintrin.h:27:
In file included from /home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/xmmintrin.h:27:
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:47:5: error: 
      use of undeclared identifier '__builtin_ia32_emms'; did you mean '__builtin_isless'?
    __builtin_ia32_emms();
    ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:47:5: note: 
      '__builtin_isless' declared here
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:47:25: error: 
      too few arguments to function call, expected 2, have 0
    __builtin_ia32_emms();
                        ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:64:19: error: 
      use of undeclared identifier '__builtin_ia32_vec_init_v2si'
    return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:81:12: error: 
      use of undeclared identifier '__builtin_ia32_vec_ext_v2si'
    return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
           ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:143:19: error: 
      use of undeclared identifier '__builtin_ia32_packsswb'
    return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:173:19: error: 
      use of undeclared identifier '__builtin_ia32_packssdw'
    return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:203:19: error: 
      use of undeclared identifier '__builtin_ia32_packuswb'
    return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:230:19: error: 
      use of undeclared identifier '__builtin_ia32_punpckhbw'
    return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:253:19: error: 
      use of undeclared identifier '__builtin_ia32_punpckhwd'
    return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:274:19: error: 
      use of undeclared identifier '__builtin_ia32_punpckhdq'
    return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:301:19: error: 
      use of undeclared identifier '__builtin_ia32_punpcklbw'
    return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:324:19: error: 
      use of undeclared identifier '__builtin_ia32_punpcklwd'
    return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:345:19: error: 
      use of undeclared identifier '__builtin_ia32_punpckldq'
    return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:366:19: error: 
      use of undeclared identifier '__builtin_ia32_paddb'; did you mean '__builtin_arm_qadd'?
    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:366:19: note: 
      '__builtin_arm_qadd' declared here
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:366:40: error: 
      cannot initialize a parameter of type 'int' with an rvalue of type '__v8qi'
      (vector of 8 'char' values)
    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
                                       ^~~~~~~~~~~~
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:387:19: error: 
      use of undeclared identifier '__builtin_ia32_paddw'; did you mean '__builtin_arm_qadd'?
    return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:366:19: note: 
      '__builtin_arm_qadd' declared here
    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:387:40: error: 
      cannot initialize a parameter of type 'int' with an rvalue of type '__v4hi'
      (vector of 4 'short' values)
    return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
                                       ^~~~~~~~~~~~
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:408:19: error: 
      use of undeclared identifier '__builtin_ia32_paddd'; did you mean '__builtin_arm_qadd'?
    return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:366:19: note: 
      '__builtin_arm_qadd' declared here
    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
                  ^
/home/jiangc/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib64/clang/3.8.275480/include/mmintrin.h:408:40: error: 
      cannot initialize a parameter of type 'int' with an rvalue of type '__v2si'
      (vector of 2 'int' values)
    return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
                                       ^~~~~~~~~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [/home/jiangc/opencv3.3Ndk库/hello-jni/obj/local/armeabi-v7a/objs/opencv/core/src/cuda_host_mem.o] Error 1


Android.mk file
--------------------------------------------------------------------------------
LOCAL_PATH :=$(call my-dir)
ZLIB_PATH:=/home/jiangc/android-ndk-r14b/platforms/android-19/arch-arm/usr
include $(CLEAR_VARS)


LOCAL_MODULE := opencv

#源文件 mk 文件
include $(LOCAL_PATH)/core_source.mk
include $(LOCAL_PATH)/dnn_source.mk
include $(LOCAL_PATH)/features2d_source.mk
include $(LOCAL_PATH)/highgui_source.mk
include $(LOCAL_PATH)/imgcodecs_source.mk
include $(LOCAL_PATH)/imgproc_source.mk
include $(LOCAL_PATH)/ml_source.mk
include $(LOCAL_PATH)/objdetect_source.mk
include $(LOCAL_PATH)/photo_source.mk
include $(LOCAL_PATH)/stitching_source.mk
include $(LOCAL_PATH)/videoio_source.mk
include $(LOCAL_PATH)/video_source.mk
include $(LOCAL_PATH)/viz_source.mk
include $(LOCAL_PATH)/calib3d_source.mk
include $(LOCAL_PATH)/ts_source.mk

#include $(LOCAL_PATH)/cuda_source.mk

#包含源文件变量
LOCAL_SRC_FILES := $(CORE_SOURCE) \
                   $(DNN_SOURCE)     \
                   $(FEATURES2D_SOURCE)   \
                   $(HIGHGUI_SOURCE)    \
                   $(IMGCODECS_SOURCE)    \
                   $(IMAGEPROC_SOURCE)    \
                   $(ML_SOURCE)    \
                   $(OBJDETECT_SOURCE)    \
                   $(PHOTO_SOURCE)    \
                   $(STITCHING_SOURCE)   \
                   $(VIDEOIO_SOURCE)    \
                   $(VIDEO_SOURCE)    \
                   $(VIZ_SOURCE)       \
                   $(TS_SOURCE)\
                   $(CALIB3D_SOURCE)

                   #$(CUDAWARPING_SOURCE)  \
                   #$(CUDASTEREO_SOURCE)   \
                   #$(CUDAIMGPROC_SOURCE)    \
                   #$(CUDAOBJDETECT_SOURCE)   \
                   #$(CUDAFEATURES2D_SOURCE)   \
                   #$(CUDALEGACY_SOURCE)   \
                   #$(CUDALEGACY_SOURCE)    \
                   #$(CUDAARITHM_SOURCE)    \
                   #$(CUDAOPTFLOW_SOURCE)    \
                   #$(CUDACODEC_SOURCE)      \
#定义include文件位置
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/  \
                  $(ZLIB_PATH)/include

LOCAL_CPPFLAGS := -frtti -fexceptions 
LOCAL_LDLIBS += -llog -lz 

LOCAL_LDLIBS+= -L$(SYSROOT)/usr/lib 

include $(BUILD_SHARED_LIBRARY)

Application.mk file

APP_OPTIM := release
APP_PLATFORM := android-19
APP_STL := gnustl_static
APP_CPPFLAGS += -frtti 
APP_CPPFLAGS += -fexceptions  
APP_CPPFLAGS += -DANDROID
APP_ABI := armeabi-v7a



One of the mk source files
--------------------------------------------------------------------------------
CORE_SOURCE = core/perf/perf_io_base64.cpp\
core/perf/perf_addWeighted.cpp\
core/perf/perf_convertTo.cpp\
core/perf/perf_math.cpp\
core/perf/perf_split.cpp   \
core/perf/perf_inRange.cpp   \
core/perf/perf_umat.cpp   \
core/perf/perf_stat.cpp   \
core/perf/perf_dft.cpp   \
core/perf/perf_abs.cpp    \
core/perf/perf_bitwise.cpp   \
core/perf/perf_cvround.cpp    \
core/perf/perf_compare.cpp    \
core/perf/perf_merge.cpp    \
core/perf/perf_mat.cpp    \
core/perf/perf_sort.cpp   \
core/perf/perf_main.cpp    \
core/perf/perf_norm.cpp    \
core/perf/perf_lut.cpp    \
core/perf/perf_reduce.cpp    \
core/perf/perf_dot.cpp    \
core/perf/cuda/perf_gpumat.cpp   \
core/perf/perf_arithm.cpp    \
core/perf/perf_minmaxloc.cpp    \
core/perf/opencl/perf_usage_flags.cpp    \
core/perf/opencl/perf_bufferpool.cpp    \
core/perf/opencl/perf_matop.cpp    \
core/perf/opencl/perf_gemm.cpp     \
core/perf/opencl/perf_arithm.cpp   \
core/perf/opencl/perf_dxt.cpp    \
core/perf/opencl/perf_channels.cpp   \
core/src/cuda_host_mem.cpp   \
core/src/rand.cpp   \
core/src/lapack.cpp   \
core/src/parallel.cpp   \
core/src/lpsolver.cpp    \
core/src/stat.dispatch.cpp   \
core/src/matrix_decomp.cpp    \
core/src/trace.cpp    \
core/src/stat.cpp    \
core/src/cuda_stream.cpp   \
core/src/hal_internal.cpp    \
core/src/convert.avx2.cpp    \
core/src/convert.fp16.cpp   \
core/src/opengl.cpp    \
core/src/stl.cpp    \
core/src/copy.cpp    \
core/src/parallel_pthreads.cpp   \
core/src/alloc.cpp     \
core/src/directx.cpp    \
core/src/arithm.cpp     \
core/src/lda.cpp    \
core/src/va_intel.cpp    \
core/src/split.cpp    \
core/src/convert.sse4_1.cpp   \
core/src/gl_core_3_1.cpp    \
core/src/tables.cpp    \
core/src/out.cpp    \
core/src/cuda_info.cpp   \
core/src/mathfuncs.cpp     \
core/src/system.cpp     \
core/src/merge.cpp    \
core/src/mathfuncs_core.dispatch.cpp   \
core/src/matrix.cpp   \
core/src/command_line_parser.cpp   \
core/src/conjugate_gradient.cpp    \
core/src/softfloat.cpp     \
core/src/cuda_gpu_mat.cpp     \
core/src/persistence.cpp    \
core/src/ovx.cpp    \
core/src/array.cpp    \
core/src/dxt.cpp     \
core/src/glob.cpp     \
core/src/pca.cpp     \
core/src/kmeans.cpp    \
core/src/types.cpp    \
core/src/matmul.cpp    \
core/src/ocl.cpp   \
core/src/opencl/runtime/opencl_clamdfft.cpp  \
core/src/opencl/runtime/opencl_clamdblas.cpp   \
core/src/opencl/runtime/opencl_core.cpp    \
core/src/matop.cpp   \
core/src/convert.cpp   \
core/src/algorithm.cpp    \
core/src/downhill_simplex.cpp   \
core/src/umatrix.cpp    \
core/src/datastructs.cpp    \
core/test/test_misc.cpp    \
core/test/test_umat.cpp   \
core/test/test_eigen.cpp   \
core/test/test_ippasync.cpp   \
core/test/test_countnonzero.cpp   \
core/test/test_utils.cpp    \
core/test/test_rotatedrect.cpp   \
core/test/test_operations.cpp    \
core/test/test_math.cpp    \
core/test/test_io.cpp\
core/test/test_ptr.cpp\
core/test/test_hal_core.cpp\
core/test/test_mat.cpp\
core/test/test_main.cpp\
core/test/test_dxt.cpp\
core/test/test_concatenation.cpp\
core/test/ocl/test_matrix_expr.cpp    \
core/test/ocl/test_gemm.cpp    \
core/test/ocl/test_dft.cpp   \
core/test/ocl/test_channels.cpp   \
core/test/ocl/test_image2d.cpp   \
core/test/ocl/test_matrix_operation.cpp   \
core/test/ocl/test_arithm.cpp   \
core/test/test_intrin.cpp   \
core/test/test_downhill_simplex.cpp   \
core/test/test_rand.cpp    \
core/test/test_conjugate_gradient.cpp   \
core/test/test_arithm.cpp    \
core/test/test_ds.cpp   \
core/test/test_lpsolver.cpp   \
core/CMakeFiles/3.9.1/CompilerIdCXX/CMakeCXXCompilerId.cpp   \
core/misc/java/src/cpp/core_manual.cpp

回答1:


Those are x86 specific intrinsics. I really doubt that the CUDA support is able to be built for Android. Probably just remove that file from CORE_SOURCE.



来源:https://stackoverflow.com/questions/47192752/ndk-build-opencv-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!