Keep on going, never give up.

Android ndk-build几个常见错误

近期在编译Android时,ndk-build遇到一些错误,汇总一下(汇总来源参文末网址),方便参考。

一、error: exception handling disabled, use -fexceptions to enable

解决方法:

打开Android.mk文件,添加: LOCAL_CPPFLAGS += -fexceptions

也可以在Application.mk文件中添加APP_CPPFLAGS += -fexceptions

说明:从NDK r5就开始NDK的工具链就开始支持了C++的异常控制,只不过为了通用性的原因,所有的C++原文件被编译的时候都是默认的是-fno-exceptions,即不不支持异常控制的。使用-fexceptions标记可以开启异常控制。所以你只需要在你的每个模块的Android.mk中添加LOCAL_CPPFLAGS += -fexceptions就可以了。

二、error:undefined reference to `__cxa_end_cleanup'

解决办法:

打开Android.mk文件,添加

LOCAL_LDFLAGS = $(NDK_HOME)/platforms/$(ANDROID_SDK_VERSION)/$(ARCHETECTURE_TYPE)/usr/lib/libstdc++.a

LOCAL_CPPFLAGS += -fexceptions -lstdc++

注意,其中NDK_HOME为环境变量,表示NDK的安装路径。

三、error:undefined reference to `__android_log_print'

解决办法:

打开Android.mk文件,添加

LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog

四、c++模板库

Android.mk:

LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog $(NDK_HOME)/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a

LOCAL_C_INCLUDES += $(NDK_HOME)/sources/cxx-stl/stlport/stlport

Application.mk:

APP_CPPFLAGS += -fexceptions

APP_STL := stlport_static

APP_CPPFLAGS += -frtti

参考资料:

http://blog.sina.com.cn/s/blog_643e838601015zbo.html

http://www.cnblogs.com/lyout/archive/2011/12/28/2253831.html

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.