- Hi and thanks for practically the only guide online for how to do this!!
- I am having trouble with what I believe is a linker error. Though ndk-builder gives no errors for building libnonfree.so, I noticed with ls-la that the size of my file is much smaller than the one you provided pre-compiled (5088 bytes vs 460144 bytes for yours).
- libnonfree.so ndk-build output:
- nathan@nathan-lenovo:~/Downloads/nonfree_opencv_android/jni$ ../../android-ndk-r10c/ndk-build
- [armeabi] Prebuilt : libopencv_java.so <= /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/../libs/armeabi/
- [armeabi] SharedLibrary : libnonfree.so
- [armeabi] Install : libnonfree.so => libs/armeabi/libnonfree.so
- Application.mk:
- APP_ABI := armeabi
- #APP_ABI += armeabi-v7a # you can do either armeabi or armeabi-v7a, steps are the same.
- #APP_ABI += x86
- APP_STL := gnustl_static
- APP_CPPFLAGS := -frtti -fexceptions
- APP_PLATFORM := android-19
- Android.mk:
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- OPENCV_INSTALL_MODULES:=on
- OPENCV_CAMERA_MODULES:=off
- include /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk
- LOCAL_C_INCLUDES:= /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include
- LOCAL_MODULE := nonfree
- LOCAL_CFLAGS := -Werror -O3 -ffast-math
- LOCAL_LDLIBS += -llog
- # for 2.4.8, delete the line precomp.cpp \
- LOCAL_SRC_FILES := nonfree_init.cpp \
- precomp.cpp \
- sift.cpp \
- surf.cpp
- include $(BUILD_SHARED_LIBRARY)
- This is the output for the demo C++ app:
- nathan@nathan-lenovo:~/Downloads/sift_demo/sift_opencv_android$ ../../android-ndk-r10c/ndk-build
- [armeabi] Prebuilt : libopencv_java.so <= jni/
- [armeabi] Install : libopencv_java.so => libs/armeabi/libopencv_java.so
- [armeabi] Prebuilt : libnonfree.so <= jni/
- [armeabi] Install : libnonfree.so => libs/armeabi/libnonfree.so
- [armeabi] Compile++ thumb: test_sift <= test_sift.cpp
- [armeabi] Executable : test_sift
- /home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function .LTHUNK7:/home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include/opencv2/nonfree/features2d.hpp:58: error: undefined reference to 'vtable for cv::SIFT'
- /home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function .LTHUNK7:/home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include/opencv2/nonfree/features2d.hpp:58: error: undefined reference to 'VTT for cv::SIFT'
- /home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function main:jni/test_sift.cpp:39: error: undefined reference to 'cv::SIFT::SIFT(int, int, double, double, double)'
- /home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function main:jni/test_sift.cpp:47: error: undefined reference to 'cv::SIFT::SIFT(int, int, double, double, double)'
- collect2: ld returned 1 exit status
- make: *** [obj/local/armeabi/test_sift] Error 1
- Application.mk:
- APP_ABI := armeabi
- #APP_ABI += armeabi-v7a
- APP_STL := gnustl_static
- APP_CPPFLAGS := -frtti -fexceptions
- APP_PLATFORM := android-19
- Android.mk:
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE := sift_prebuilt
- LOCAL_SRC_FILES := libnonfree.so
- include $(PREBUILT_SHARED_LIBRARY)
- include $(CLEAR_VARS)
- LOCAL_MODULE := opencv_java_prebuilt
- LOCAL_SRC_FILES := libopencv_java.so
- include $(PREBUILT_SHARED_LIBRARY)
- include $(CLEAR_VARS)
- LOCAL_C_INCLUDES:= /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include/
- LOCAL_MODULE := test_sift
- LOCAL_CFLAGS := -Werror -O3 -ffast-math
- LOCAL_LDLIBS += -llog -ldl
- LOCAL_SHARED_LIBRARIES := sift_prebuilt opencv_java_prebuilt
- LOCAL_SRC_FILES := test_sift.cpp
- include $(BUILD_EXECUTABLE)