ПОЖАЛУЙСТА, СМОТРИТЕ ДОПОЛНЕНИЯ! Первая проблема решена в Linux, а не в Windows и Cygwin, но есть новая проблема. Пожалуйста, смотрите ниже!
В настоящее время я пытаюсь скомпилировать OpenCV для Android NDK, чтобы использовать его в своих приложениях. Для этого я попытался следовать этому руководству:
http://www.stanford.edu/~zxwang/android_opencv.html
Но при компиляции загруженного материала с помощью ndk-build я получаю эту ошибку:
$ /cygdrive/u/flori/workspace/android-ndk-r5b/ndk-build
Compile++ thumb : opencv <= cvjni.cpp
Compile++ thumb : cxcore <= cxalloc.cpp
Compile++ thumb : cxcore <= cxarithm.cpp
Compile++ thumb : cxcore <= cxarray.cpp
Compile++ thumb : cxcore <= cxcmp.cpp
Compile++ thumb : cxcore <= cxconvert.cpp
Compile++ thumb : cxcore <= cxcopy.cpp
Compile++ thumb : cxcore <= cxdatastructs.cpp
Compile++ thumb : cxcore <= cxdrawing.cpp
Compile++ thumb : cxcore <= cxdxt.cpp
Compile++ thumb : cxcore <= cxerror.cpp
Compile++ thumb : cxcore <= cximage.cpp
Compile++ thumb : cxcore <= cxjacobieigens.cpp
Compile++ thumb : cxcore <= cxlogic.cpp
Compile++ thumb : cxcore <= cxlut.cpp
Compile++ thumb : cxcore <= cxmathfuncs.cpp
Compile++ thumb : cxcore <= cxmatmul.cpp
Compile++ thumb : cxcore <= cxmatrix.cpp
Compile++ thumb : cxcore <= cxmean.cpp
Compile++ thumb : cxcore <= cxmeansdv.cpp
Compile++ thumb : cxcore <= cxminmaxloc.cpp
Compile++ thumb : cxcore <= cxnorm.cpp
Compile++ thumb : cxcore <= cxouttext.cpp
Compile++ thumb : cxcore <= cxpersistence.cpp
Compile++ thumb : cxcore <= cxprecomp.cpp
Compile++ thumb : cxcore <= cxrand.cpp
Compile++ thumb : cxcore <= cxsumpixels.cpp
Compile++ thumb : cxcore <= cxsvd.cpp
Compile++ thumb : cxcore <= cxswitcher.cpp
Compile++ thumb : cxcore <= cxtables.cpp
Compile++ thumb : cxcore <= cxutils.cpp
StaticLibrary : libstdc++.a
StaticLibrary : libcxcore.a
Compile++ thumb : cv <= cvaccum.cpp
Compile++ thumb : cv <= cvadapthresh.cpp
Compile++ thumb : cv <= cvapprox.cpp
Compile++ thumb : cv <= cvcalccontrasthistogram.cpp
Compile++ thumb : cv <= cvcalcimagehomography.cpp
Compile++ thumb : cv <= cvcalibinit.cpp
Compile++ thumb : cv <= cvcalibration.cpp
Compile++ thumb : cv <= cvcamshift.cpp
Compile++ thumb : cv <= cvcanny.cpp
Compile++ thumb : cv <= cvcolor.cpp
Compile++ thumb : cv <= cvcondens.cpp
Compile++ thumb : cv <= cvcontours.cpp
Compile++ thumb : cv <= cvcontourtree.cpp
Compile++ thumb : cv <= cvconvhull.cpp
Compile++ thumb : cv <= cvcorner.cpp
Compile++ thumb : cv <= cvcornersubpix.cpp
Compile++ thumb : cv <= cvderiv.cpp
Compile++ thumb : cv <= cvdistransform.cpp
Compile++ thumb : cv <= cvdominants.cpp
Compile++ thumb : cv <= cvemd.cpp
Compile++ thumb : cv <= cvfeatureselect.cpp
Compile++ thumb : cv <= cvfilter.cpp
Compile++ thumb : cv <= cvfloodfill.cpp
Compile++ thumb : cv <= cvfundam.cpp
Compile++ thumb : cv <= cvgeometry.cpp
Compile++ thumb : cv <= cvhaar.cpp
Compile++ thumb : cv <= cvhistogram.cpp
Compile++ thumb : cv <= cvhough.cpp
Compile++ thumb : cv <= cvimgwarp.cpp
Compile++ thumb : cv <= cvinpaint.cpp
Compile++ thumb : cv <= cvkalman.cpp
Compile++ thumb : cv <= cvlinefit.cpp
Compile++ thumb : cv <= cvlkpyramid.cpp
Compile++ thumb : cv <= cvmatchcontours.cpp
Compile++ thumb : cv <= cvmoments.cpp
Compile++ thumb : cv <= cvmorph.cpp
Compile++ thumb : cv <= cvmotempl.cpp
Compile++ thumb : cv <= cvoptflowbm.cpp
Compile++ thumb : cv <= cvoptflowhs.cpp
Compile++ thumb : cv <= cvoptflowlk.cpp
Compile++ thumb : cv <= cvpgh.cpp
Compile++ thumb : cv <= cvposit.cpp
Compile++ thumb : cv <= cvprecomp.cpp
Compile++ thumb : cv <= cvpyramids.cpp
Compile++ thumb : cv <= cvpyrsegmentation.cpp
Compile++ thumb : cv <= cvrotcalipers.cpp
Compile++ thumb : cv <= cvsamplers.cpp
Compile++ thumb : cv <= cvsegmentation.cpp
Compile++ thumb : cv <= cvshapedescr.cpp
Compile++ thumb : cv <= cvsmooth.cpp
Compile++ thumb : cv <= cvsnakes.cpp
Compile++ thumb : cv <= cvstereobm.cpp
Compile++ thumb : cv <= cvstereogc.cpp
Compile++ thumb : cv <= cvsubdivision2d.cpp
Compile++ thumb : cv <= cvsumpixels.cpp
Compile++ thumb : cv <= cvsurf.cpp
Compile++ thumb : cv <= cvswitcher.cpp
Compile++ thumb : cv <= cvtables.cpp
Compile++ thumb : cv <= cvtemplmatch.cpp
Compile++ thumb : cv <= cvthresh.cpp
Compile++ thumb : cv <= cvundistort.cpp
Compile++ thumb : cv <= cvutils.cpp
StaticLibrary : libcv.a
SharedLibrary : libopencv.so
U:/flori/workspace/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebui
lt/windows/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-andr
oideabi/bin/ld.exe: cannot find -lcxcore
collect2: ld returned 1 exit status
make: *** [/cygdrive/u/flori/workspace/android/testOpenCV/obj/local/armeabi/libo
pencv.so] Error 1
Я пытаюсь скомпилировать его в системе Windows и с новейшей версией NDK ...
Кто-нибудь знает, что означает эта ошибка компоновки и что я могу сделать, чтобы она снова заработала?
Было бы здорово, если бы кто-нибудь мог помочь
После решения проблемы я обнаружил, что существует другой способ компиляции OpenCV для Android, использующий текущую версию OpenCV (вместо версии 1.1 выше) и модифицированный Android NDK из crystax, который поддерживает STL и исключения и, следовательно, поддерживает новейшую версию OpenCV.
Всю информацию об этом можно найти здесь:
http://opencv.willowgarage.com/wiki/Android
Там написано, что нужно скачать текущий ствол svn и crystax-r4 android-ndk, а также swig, что я и сделал.
Я вошел в папку, создал каталог сборки, запустил cmake и затем собрал статические библиотеки, которые, похоже, работали. По крайней мере, он успешно выполнил команду make без ошибок.
Теперь я хотел собрать разделяемые библиотеки, поэтому я вошел в папку android-jni и снова запустил make, но получил эту ошибку:
% make -j4
OPENCV_CONFIG = ../build/android-opencv.mk
make clean-swig &&\
mkdir -p jni/gen &&\
mkdir -p src/com/opencv/jni &&\
swig -java -c++ -package "com.opencv.jni" \
-outdir src/com/opencv/jni \
-o jni/gen/android_cv_wrap.cpp jni/android-cv.i
OPENCV_CONFIG = ../build/android-opencv.mk
make[1]: Entering directory `/home/florian/android-opencv-willowgarage/android/android-jni'
make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
rm -f jni/gen/android_cv_wrap.cpp
make[1]: Leaving directory `/home/florian/android-opencv-willowgarage/android/android-jni'
/home/florian/android-ndk-r4-crystax/ndk-build OPENCV_CONFIG=../build/android-opencv.mk \
PROJECT_PATH= ARM_TARGETS="armeabi armeabi-v7a" V=
/home/florian/android-ndk-r4-crystax/ndk-build OPENCV_CONFIG=../build/android-opencv.mk \
PROJECT_PATH= ARM_TARGETS="armeabi armeabi-v7a" V=
make[1]: Entering directory `/home/florian/android-opencv-willowgarage/android/android-jni'
/home/florian/android-opencv-willowgarage/android/android-jni/jni/Android.mk:10: ../build/android-opencv.mk: No such file or directory
make[1]: Entering directory `/home/florian/android-opencv-willowgarage/android/android-jni'
/home/florian/android-opencv-willowgarage/android/android-jni/jni/Android.mk:10: ../build/android-opencv.mk: No such file or directory
/home/florian/android-opencv-willowgarage/android/android-jni/jni/Android.mk:10: ../build/android-opencv.mk: No such file or directory
make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
/home/florian/android-opencv-willowgarage/android/android-jni/jni/Android.mk:10: ../build/android-opencv.mk: No such file or directory
make[1]: *** No rule to make target `../build/android-opencv.mk'. Stop.
make[1]: Leaving directory `/home/florian/android-opencv-willowgarage/android/android-jni'
make: *** [libs/armeabi/libandroid-opencv.so] Error 2
make: *** Waiting for unfinished jobs....
make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
make[1]: *** No rule to make target `../build/android-opencv.mk'. Stop.
make[1]: Leaving directory `/home/florian/android-opencv-willowgarage/android/android-jni'
make: *** [libs/armeabi-v7a/libandroid-opencv.so] Error 2
Кто-нибудь знает, что это значит и что я могу сделать для создания общих библиотек?
...
Хорошо, после просмотра сообщения об ошибке мне пришло в голову, что в каталоге сборки что-то отсутствует, но в папке android не было даже каталога сборки, поэтому я создал его, запустил ' cmake 'там и' make 'снова, но получите эту ошибку:
Compile thumb : opencv_lapack <= /home/florian/android-opencv-willowgarage/3rdparty/lapack/sgetrf.c
Compile thumb : opencv_lapack <= /home/florian/android-opencv-willowgarage/3rdparty/lapack/scopy.c
Compile++ thumb: opencv_core <= /home/florian/android-opencv-willowgarage/modules/core/src/matrix.cpp
cc1plus: error: /home/florian/android-opencv-willowgarage/android/../modules/index.rst/include: Not a directory
make[3]: *** [/home/florian/android-opencv-willowgarage/android/build/obj/local/armeabi/objs/opencv_core/src/matrix.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [android-opencv] Error 2
make[1]: *** [CMakeFiles/ndk.dir/all] Error 2
make: *** [all] Error 2
Кто-нибудь знает, что это значит?