Chịu với tôi - đây là một mô tả dài, nhưng tôi muốn bao gồm tất cả các chi tiết. Tôi đang cố gắng sử dụng NDK và JNI android để xây dựng các ứng dụng Android OpenCV.Biên dịch Android JNI cho OpenCV trên Mac OSX
Tôi đang theo hướng dẫn này để có được tất cả mọi thứ được cài đặt: http://www.stanford.edu/class/ee368/Android/Tutorial-2-OpenCV-for-Android-Setup-Macintosh-API8.pdf
Sau đây cài đặt tốt:
/usr/bin/g++
/usr/local/bin/swig
/usr/bin/cmake
/usr/bin/make
/Developer/pcre-8.32/
Nội dung của tập tin .bashrc của tôi:
export NDK=/Users/Me/Code/Android/android-ndk-r4-crystax
export SDK=/Users/Me/Code/Android/adt-bundle-mac-x86_64-20130219/
export OPCV=/Users/Me/Code/OpenCV/opencv
export PATH=$NDK:$SDK/tools:$SDK/platform-tools:$PATH
export NDK_ROOT=$NDK
Làm OpenCV thư viện đã đi tốt.
Do khiếu nại trong việc sử dụng make
, tôi đã phải thực hiện chỉnh sửa nhỏ trong /Users/Me/Code/OpenCV/opencv/android/android-jni/local.env.mk
mà trông giống như vậy:
#ANDROID_NDK_ROOT=$(HOME)/android-ndk-r4-crystax
ANDROID_NDK_ROOT=/Users/Me/Code/Android/android-ndk-r4-crystax
Sau đó, khi cố gắng một lần nữa để make
trong android-JNI, thư mục, thảm họa xảy ra:
/Users/Me/Code/Android/android-ndk-r4-crystax/ndk-build OPENCV_CONFIG=../build/android-opencv.mk \
PROJECT_PATH= ARM_TARGETS="armeabi armeabi-v7a" V=
Gdbserver : [arm-eabi-4.4.0] /Users/Me/Code/OpenCV/opencv/android/android-jni/libs/armeabi/gdbserver
Gdbsetup : /Users/Me/Code/OpenCV/opencv/android/android-jni/libs/armeabi/gdb.setup
Gdbsetup : + source directory /Users/Me/Code/OpenCV/opencv/android/android-jni/jni
Gdbserver : [arm-eabi-4.4.0] /Users/Me/Code/OpenCV/opencv/android/android-jni/libs/armeabi-v7a/gdbserver
Gdbsetup : /Users/Me/Code/OpenCV/opencv/android/android-jni/libs/armeabi-v7a/gdb.setup
Gdbsetup : + source directory /Users/Me/Code/OpenCV/opencv/android/android-jni/jni
SharedLibrary : libandroid-opencv.so
/Users/Me/Code/Android/android-ndk-r4-crystax/build/prebuilt/darwin-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/bin/ld: cannot find -lopencv_calib3d
collect2: ld returned 1 exit status
make[1]: *** [/Users/Me/Code/OpenCV/opencv/android/android-jni/obj/local/armeabi/libandroid-opencv.so] Error 1
make: *** [libs/armeabi-v7a/libandroid-opencv.so] Error 2
Tôi nghĩ có lẽ đây là lỗi pkg-config, nhưng dường như cũng được thiết lập, mặc dù trong cài đặt OpenCV cũ của tôi. Dưới đây là sản phẩm của pkg-config --cflags --libs opencv
:
-I/usr/include/opencv /usr/lib/libopencv_calib3d.dylib /usr/lib/libopencv_contrib.dylib /usr/lib/libopencv_core.dylib /usr/lib/libopencv_features2d.dylib /usr/lib/libopencv_flann.dylib /usr/lib/libopencv_gpu.dylib /usr/lib/libopencv_highgui.dylib /usr/lib/libopencv_imgproc.dylib /usr/lib/libopencv_legacy.dylib /usr/lib/libopencv_ml.dylib /usr/lib/libopencv_nonfree.dylib /usr/lib/libopencv_objdetect.dylib /usr/lib/libopencv_photo.dylib /usr/lib/libopencv_stitching.dylib /usr/lib/libopencv_ts.dylib /usr/lib/libopencv_video.dylib /usr/lib/libopencv_videostab.dylib
Việc cài đặt được xây dựng bởi hướng dẫn đặc biệt này đã đặt một tập tin opencv.pc
tại vị trí này:
/Users/Me/Code/OpenCV/opencv/build/unix-install
NHƯNG Chạy dưới đây và cố gắng make
một lần nữa vẫn không sửa được vấn đề:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/Users/Me/Code/OpenCV/opencv/build/unix-install
Tôi không thể tìm ra điều gì sai. Tôi đã chiến đấu với vấn đề này trong khoảng một tháng và tắt, và cuối cùng cần một số ý kiến bên ngoài. Ý tưởng nào?
Mine là chỉ tò mò. Tại sao bạn sử dụng android-ndk-r4-crystax? Đó là ít nhất hai tuổi? Bạn có thể thử biên dịch với một ndk mới hơn không? – Blackbelt