2012-10-28 32 views
0

一個跟進的問題到一個較早的一個 - compile ICS/JB camera application - native library jni-mosaic errorNDK錯誤試圖建立的CyanogenMod相機應用

我一直在試圖從CyanogenMod sources建立ICS相機應用。 我在Windows 7上,UAC關閉。使用Cygwin和最新的Android NDK。

嘗試在工作區使用chmod -R 777,增加了NDK_TOOLCHAIN_VERSION := 4.4.3LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llogAndroid.mk文件,但無論我做什麼,我仍然得到這個錯誤:

Compile++ thumb : jni_mosaic <= feature_mos_jni.cpp 
In file included from jni/feature_mos_jni.cpp:21:0: 
C:/android-ndk/platforms/android-14/arch-arm/usr/include/jni.h:592:13: note: the mangling of 'va_list' has changed in GCC 4.4 
Compile++ thumb : jni_mosaic <= mosaic_renderer_jni.cpp 
In file included from jni/mosaic_renderer_jni.cpp:19:0: 
C:/android-ndk/platforms/android-14/arch-arm/usr/include/jni.h:592:13: note: the mangling of 'va_list' has changed in GCC 4.4 
Compile++ thumb : jni_mosaic <= trsMatrix.cpp 
Compile++ thumb : jni_mosaic <= AlignFeatures.cpp 
Compile++ thumb : jni_mosaic <= Blend.cpp 
Compile++ thumb : jni_mosaic <= Delaunay.cpp 
Compile++ thumb : jni_mosaic <= ImageUtils.cpp 
Compile++ thumb : jni_mosaic <= Mosaic.cpp 
Compile++ thumb : jni_mosaic <= Pyramid.cpp 
Compile++ thumb : jni_mosaic <= Renderer.cpp 
Compile++ thumb : jni_mosaic <= WarpRenderer.cpp 
Compile++ thumb : jni_mosaic <= SurfaceTextureRenderer.cpp 
Compile++ thumb : jni_mosaic <= YVURenderer.cpp 
Compile++ thumb : jni_mosaic <= FrameBuffer.cpp 
Compile++ thumb : jni_mosaic <= db_feature_detection.cpp 
Compile++ thumb : jni_mosaic <= db_feature_matching.cpp 
Compile++ thumb : jni_mosaic <= db_framestitching.cpp 
Compile++ thumb : jni_mosaic <= db_image_homography.cpp 
Compile++ thumb : jni_mosaic <= db_rob_image_homography.cpp 
Compile++ thumb : jni_mosaic <= db_utilities.cpp 
Compile++ thumb : jni_mosaic <= db_utilities_camera.cpp 
Compile++ thumb : jni_mosaic <= db_utilities_indexing.cpp 
Compile++ thumb : jni_mosaic <= db_utilities_linalg.cpp 
Compile++ thumb : jni_mosaic <= db_utilities_poly.cpp 
Compile++ thumb : jni_mosaic <= dbreg.cpp 
Compile++ thumb : jni_mosaic <= dbstabsmooth.cpp 
Compile thumb : jni_mosaic <= vp_motionmodel.c 
SharedLibrary : libjni_mosaic.so 
./obj/local/armeabi/objs/jni_mosaic/mosaic_renderer_jni.o: In function `checkGLErrorDetail(char const*, int, char const*)': 
D:\CMCam/jni/mosaic_renderer_jni.cpp:195: undefined reference to `glGetError' 
./obj/local/armeabi/objs/jni_mosaic/mosaic_renderer_jni.o: In function `checkFramebufferStatus(char const*)': 
D:\CMCam/jni/mosaic_renderer_jni.cpp:177: undefined reference to `glCheckFramebufferStatus' 
./obj/local/armeabi/objs/jni_mosaic/mosaic_renderer_jni.o: In function `bindSurfaceTexture(unsigned int)': 
D:\CMCam/jni/mosaic_renderer_jni.cpp:211: undefined reference to `glBindTexture' 
D:\CMCam/jni/mosaic_renderer_jni.cpp:215: undefined reference to `glTexParameterf' 
D:\CMCam/jni/mosaic_renderer_jni.cpp:217: undefined reference to `glTexParameterf' 
D:\CMCam/jni/mosaic_renderer_jni.cpp:220: undefined reference to `glTexParameteri' 
D:\CMCam/jni/mosaic_renderer_jni.cpp:222: undefined reference to `glTexParameteri' 
./obj/local/armeabi/objs/jni_mosaic/mosaic_renderer_jni.o: In function `Java_com_android_camera_MosaicRenderer_init': 
D:\CMCam/jni/mosaic_renderer_jni.cpp:528: undefined reference to `glBindFramebuffer' 
D:\CMCam/jni/mosaic_renderer_jni.cpp:530: undefined reference to `glGenTextures' 
./obj/local/armeabi/objs/jni_mosaic/mosaic_renderer_jni.o: In function `Java_com_android_camera_MosaicRenderer_transferGPUtoCPU': 
D:\CMCam/jni/mosaic_renderer_jni.cpp:695: undefined reference to `glBindFramebuffer' 
D:\CMCam/jni/mosaic_renderer_jni.cpp:703: undefined reference to `glReadPixels' 
D:\CMCam/jni/mosaic_renderer_jni.cpp:708: undefined reference to `glBindFramebuffer' 
D:\CMCam/jni/mosaic_renderer_jni.cpp:716: undefined reference to `glReadPixels' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/Renderer.o: In function `Renderer::loadShader(unsigned int, char const*)': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:39: undefined reference to `glCreateShader' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:41: undefined reference to `glShaderSource' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:42: undefined reference to `glCompileShader' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:44: undefined reference to `glGetShaderiv' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:47: undefined reference to `glGetShaderiv' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:51: undefined reference to `glGetShaderInfoLog' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:56: undefined reference to `glDeleteShader' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/Renderer.o: In function `Renderer::createProgram(char const*, char const*)': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:78: undefined reference to `glCreateProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:81: undefined reference to `glAttachShader' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:83: undefined reference to `glAttachShader' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:86: undefined reference to `glLinkProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:88: undefined reference to `glGetProgramiv' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:95: undefined reference to `glGetProgramiv' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:106: undefined reference to `glDeleteProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:101: undefined reference to `glGetProgramInfoLog' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/Renderer.o: In function `Renderer::SetupGraphics(int, int)': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:126: undefined reference to `glUseProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:129: undefined reference to `glBindFramebuffer' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:135: undefined reference to `glViewport' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/Renderer.o: In function `Renderer::SetupGraphics(FrameBuffer*)': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:157: undefined reference to `glUseProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:160: undefined reference to `glBindFramebuffer' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:166: undefined reference to `glViewport' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/Renderer.o: In function `Renderer::Clear(float, float, float, float)': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:185: undefined reference to `glClearColor' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/Renderer.cpp:186: undefined reference to `glClear' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/WarpRenderer.o: In function `WarpRenderer::InitializeGLProgram()': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:101: undefined reference to `glDeleteProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:82: undefined reference to `glUseProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:86: undefined reference to `glGetAttribLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:87: undefined reference to `glGetUniformLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:88: undefined reference to `glGetUniformLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:89: undefined reference to `glGetUniformLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:90: undefined reference to `glGetAttribLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:93: undefined reference to `glGetUniformLocation' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/WarpRenderer.o: In function `WarpRenderer::DrawTexture(float*)': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:119: undefined reference to `glDisable' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:121: undefined reference to `glActiveTexture' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:125: undefined reference to `glBindTexture' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:129: undefined reference to `glUniform1i' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:133: undefined reference to `glVertexAttribPointer' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:137: undefined reference to `glVertexAttribPointer' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:139: undefined reference to `glEnableVertexAttribArray' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:140: undefined reference to `glEnableVertexAttribArray' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:143: undefined reference to `glUniformMatrix4fv' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:144: undefined reference to `glUniformMatrix4fv' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:145: undefined reference to `glUniformMatrix4fv' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:148: undefined reference to `glDrawElements' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/WarpRenderer.cpp:152: undefined reference to `glBindFramebuffer' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.o: In function `SurfaceTextureRenderer::InitializeGLProgram()': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:110: undefined reference to `glDeleteProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:92: undefined reference to `glUseProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:95: undefined reference to `glGetAttribLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:97: undefined reference to `glGetAttribLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:99: undefined reference to `glGetUniformLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:101: undefined reference to `glGetUniformLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:103: undefined reference to `glPixelStorei' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.o: In function `SurfaceTextureRenderer::DrawTexture(float*)': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:128: undefined reference to `glDisable' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:130: undefined reference to `glActiveTexture' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:134: undefined reference to `glBindTexture' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:137: undefined reference to `glUniformMatrix4fv' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:138: undefined reference to `glUniformMatrix4fv' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:142: undefined reference to `glVertexAttribPointer' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:143: undefined reference to `glEnableVertexAttribArray' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:146: undefined reference to `glVertexAttribPointer' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:147: undefined reference to `glEnableVertexAttribArray' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:150: undefined reference to `glDrawElements' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp:152: undefined reference to `glBindFramebuffer' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/YVURenderer.o: In function `YVURenderer::InitializeGLProgram()': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:70: undefined reference to `glDeleteProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:54: undefined reference to `glUseProgram' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:58: undefined reference to `glGetAttribLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:59: undefined reference to `glGetAttribLocation' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:62: undefined reference to `glGetUniformLocation' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/YVURenderer.o: In function `YVURenderer::DrawTexture()': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:88: undefined reference to `glDisable' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:90: undefined reference to `glActiveTexture' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:94: undefined reference to `glBindTexture' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:98: undefined reference to `glUniform1i' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:102: undefined reference to `glVertexAttribPointer' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:106: undefined reference to `glVertexAttribPointer' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:108: undefined reference to `glEnableVertexAttribArray' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:109: undefined reference to `glEnableVertexAttribArray' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:112: undefined reference to `glDrawElements' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp:116: undefined reference to `glBindFramebuffer' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/FrameBuffer.o: In function `FrameBuffer::CreateBuffers()': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:72: undefined reference to `glGenFramebuffers' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:73: undefined reference to `glGenTextures' 
./obj/local/armeabi/objs/jni_mosaic/feature_mos/src/mosaic_renderer/FrameBuffer.o: In function `FrameBuffer::Init(int, int, unsigned int)': 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:30: undefined reference to `glBindFramebuffer' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:31: undefined reference to `glBindTexture' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:41: undefined reference to `glTexImage2D' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:45: undefined reference to `glTexParameteri' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:46: undefined reference to `glTexParameteri' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:49: undefined reference to `glTexParameteri' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:50: undefined reference to `glTexParameteri' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:57: undefined reference to `glFramebufferTexture2D' 
D:\CMCam/jni/feature_mos/src/mosaic_renderer/FrameBuffer.cpp:67: undefined reference to `glBindFramebuffer' 
collect2: ld returned 1 exit status 
/cygdrive/c/android-ndk/build/core/build-binary.mk:378: recipe for target `obj/local/armeabi/libjni_mosaic.so' failed 
make: *** [obj/local/armeabi/libjni_mosaic.so] Error 1 

希望任何幫幫我!

+0

你在'$(SYSROOT)有什麼在/ usr/lib'? –

+0

@AlexCohn沒有我知道的:)更改爲LOCAL_LDLIBS:= -llog。我是新手,因此我不太確定是否需要編輯Google編寫的代碼。我明白,主要問題是我錯過了GLES2庫,但不知道在哪裏可以找到它們/如何添加它們。 –

回答

5

爲了更好地理解NDK如何解釋你的Android.mk,您可以運行

ndk-build V=1 

這將呼應所有執行的命令,包括編譯和鏈接,用自己所有的參數NDK建立受讓人。

通常,NDK將包括目錄C:/android-ndk/platforms/android-14/arch-arm/usr/lib/。如果由於任何原因而沒有在鏈接命令行中指定此路徑(請參閱上面的V = 1),則應手動將其添加到LOCAL_LDLIBS

LOCAL_LDLIBS += C:/android-ndk/platforms/android-14/arch-arm/usr/lib 

氰樹中的make文件沒有爲ndk-build準備。它不是使用NDK中打包的預構建系統庫,而是使用預計在lunchbrunch期間構建的庫。這就是爲什麼它有行

LOCAL_SHARED_LIBRARIES := liblog libnativehelper libGLESv2 

你不建樹;因此,這些圖書館不是本地的。但是,您必須將它們全部三個都提供給連接器:

​​

不幸的是,只有兩個與NDK一起交付。 libnativehelper.so不是公共API的一部分。這意味着理論上你不應該依賴它。但實際上,這個庫存在於所有設備上,並且它的接口非常穩定。

您可以從您的設備仿真器使用命令提取此二進制文件,甚至

adb pull /system/lib/libnativehelper.so C:/android-ndk/platforms/android-14/arch-arm/usr/lib 
+1

非常感謝您花時間再次幫助我,並提供如此詳細的回覆!像魅力一樣......但最重要的是,我在這裏學到了很多東西!再次感謝 :) –

相關問題