2013-05-09 39 views
5

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?

+0

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

Trả lời

2

Thông báo lỗi nói

không thể tìm thấy collect2 -lopencv_calib3d: ld trở về 1 exit status

Nó có nghĩa là mối liên kết không thể tìm thấy thư viện opencv_calib3d . Nó có thể có tên libopencv_calib3d.a hoặc libopencv_calib3d.so. Vì vậy, bạn cần tìm một trong số chúng và thêm đường dẫn đến tệp này vào biến env LD_LIBRARY_PATH của bạn.

Ý tôi là nếu giả sử thư mục/Users/Me/Mã/OpenCV/opencv/lib chứa libopencv_calib3d.so thì bạn cần phải thực hiện một cái gì đó như sau đây trước khi thực hiện:

export LD_LIBRARY_PATH=/Users/Me/Code/OpenCV/opencv/lib:$LD_LIBRARY_PATH 
Các vấn đề liên quan