2011-03-14 7 views
4

하단에 추가 정보를 확인하십시오! 첫 번째 문제는 Linux에서 해결되었지만 Windows 및 Cygwin에서는 아직 해결되지 않았지만 새로운 문제가 있습니다. 아래를 봐주세요!Android에서 OpenCV 컴파일 NDK

현재 내 앱에서 사용할 수 있도록 Android NDK 용 OpenCV를 컴파일하려고합니다. 이를 위해 나는이 가이드에 따라 시도 :

http://www.stanford.edu/~zxwang/android_opencv.html

을하지만 NDK 빌드로 다운로드 물건을 컴파일 할 때이 오류가 얻을 :

$ /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 버전으로 ...

누구나이 링크 오류가 무엇을 의미하는지, 그리고 다시 작동하게하려면 무엇을 할 수 있습니까? 누군가가 나는 1.1 일에서 대신 OpenCV의 현재 버전 (사용, 안드로이드 OpenCV의를 컴파일하는 또 다른 방법이 있다는 것을 발견 작동하도록 문제를받은 후


을 도울 수 있다면

좋은 것 STL과 예외를 지원하고 최신 OpenCV 버전을 지원하는 crystax의 수정 된 Android NDK. 그에

모든 정보는 여기에서 찾을 수 있습니다 : 이 http://opencv.willowgarage.com/wiki/Android

현재의 SVN 트렁크와 내가했던 crystax-R4의 안드로이드 NDK뿐만 아니라 꿀꺽 꿀꺽를 다운로드했다.

폴더를 입력하고 빌드 디렉토리를 생성 한 후 cmake를 실행 한 다음 작동하는 것처럼 보이는 정적 라이브러리를 작성했습니다. 적어도 오류없이 make 명령을 성공적으로 실행했습니다.

나는 지금은 안드로이드 JNI 폴더를 입력하고 다시 '확인'실행되도록 공유 라이브러리를 구축하고 싶어하지만,이 오류를 가지고 :

% 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 

누군가가이 무엇을 의미하는지 생각하고 내가 무엇을해야 하는가를 공유 라이브러리를 만들 수 있습니까?

...

좋아 그것이 빌드 디렉토리에없는 무언가를 갖고있는 것 같아요 나에게왔다 ... 그러나 심지어 빌드 디렉토리가 안드로이드에 없었다 오류 메시지를 살펴 가진 후 폴더를 만들었으므로 '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 

아무도 몰라요.

답변

0

Linux에서 ndk-r5b를 사용하여 방금 빌드했습니다. 당신은 다음과 같은 뭔가가 프로젝트 디렉토리 (안 jni)에 default.properties 파일이 마십시오하지 않으면

target=android-8 

, 당신은 다시 건물을 만드는 시도 할 수 있습니다.

+0

나는 그 파일을 가지고 있습니다 : target = android-3 ... WIndows를 사용하고있는 것이 문제가 될 수 있습니까? 그래서 대개 Linux에 자동으로 포함되는 무언가가 누락 되었습니까? – evident

+0

android-8을 시도해 보는 것은 어떨까요? –

+0

이미 찾고있는 라이브러리를 구축했습니다. 다른 플랫폼에서 Android.mk가 어떻게 해석되는지 궁금합니다. –

관련 문제