android ndk问题,Android NDK 遇到的问题
Android NDK 是一个不错的工具,在使用时也会遇到问题(1)fatal error: EGL/egl.h: No such file or directory一个很简单的程序,调用了eglGetDisplay函数,因为这个函数是在 EGL/egl.h 文件中声明的,因此#include 包含了这个头文件,但是在编译时,总是提示上面的错误,找不到 EGL/egl.h 这个文件;对比NDK .
Android NDK 是一个不错的工具,在使用时也会遇到问题
(1) fatal error: EGL/egl.h: No such file or directory
一个很简单的程序,调用了eglGetDisplay函数,因为这个函数是在 EGL/egl.h 文件中声明的,因此
#include
包含了这个头文件,但是在编译时,总是提示上面的错误,找不到 EGL/egl.h 这个文件;
对比NDK samples中的另外一个Project native-activity,也需要这个文件;
问题原因:在Project的根目录下,缺少default.properties文件,需要在这个文件中指定target:
target=android-18
添加这个文件后,在文件中指定自己需要的target,再次使用ndk-build命令编译,则顺利通过;
一个奇怪的问题~
(2) 在Project的 jni 目录下,有一个Application.mk的文件,在里面指定APP_ABI的值,如果指定为all,则符合
ARM,X86,MIPS体系架构的目标文件都会生成,这会耗时比较多,通常我们只是用一个,例如armeabi-v7a,
则我们可以指定APP_ABI := armeabi-v7a
这样可以减少编译时间;
(3)
D/libEGL ( 1017): Emulator without GPU support detected. Fallback to software renderer.
D/libEGL ( 1017): loaded /system/lib/egl/libGLES_android.so
E/libEGL ( 1017): dlopen("system/lib/libGLESv2.so") failed: dlopen failed: library "system/lib/libGLESv2.so" not found
E/libEGL ( 1017): dlopen("system/lib/libGLESv1_CM.so") failed: dlopen failed: library "system/lib/libGLESv1_CM.so" not found
F/libEGL ( 1017): couldn't load system OpenGL ES wrapper libraries
F/libc ( 1017): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 1017 (main)
在程序中,调用了eglGetDisplay函数,这个函数在EGL/egl.h中声明,因此 #include 包含了这个头文件,
这个函数在libEGL.so中实现的,因此在Android.mk中通过
LOCAL_LDLIBS := -llog -lEGL
链接了libEGL.so文件,但是把生成的目标文件adb push到Android Virtual Device中运行时,报出上面的错误;
毫无头绪的错误信息~
修改Android.mk文件,把 LOCAL_LDLIBS := -llog -lEGL 修改为:
LOCAL_LDLIBS := -llog -lEGL -lGLESv2 -lGLESv1_CM
则顺利编译通过,并且能够在Android Virtual Device中正常运行,错误消失~
这是为什么呢?
查看EGL/Loader.cpp的代码,在函数Loader::open中:
hnd->set( load_driver("GLESv1_CM", tag, cnx, GLESv1_CM), GLESv1_CM );
hnd->set( load_driver("GLESv2", tag, cnx, GLESv2), GLESv2 );
static void* load_wrapper(const char* path) {
void* so = dlopen(path, RTLD_NOW | RTLD_LOCAL);
ALOGE_IF(!so, "dlopen(\"%s\") failed: %s", path, dlerror());
return so;
}
这是为什么呢?
(4)
更多推荐



所有评论(0)