NDK支持的C++运行库

作者: Andy周 | 来源:发表于2016-08-16 00:04 被阅读299次

Android平台自身带有一个微型的C++运行库支持库,称为系统运行库,但是功能有所限制,还有一些补充系统库的额外C++运行库

C++运行库 C++异常支持 C++ RTTI支持 C++标准库
系统库 No No No
GAbi++ No Yes No
STLport++ No Yes Yes
GNU STL Yes Yes Yes

1.GAbi++ C++运行库

GAbi++ C++运行库是一个试验性的,最简化的运行库,它提供建立在系统运行库所提供的相同特性集基础之上的RTTI支持。它可以作为静态库或共享库使用

2.STLport C++运行库

STLport是一个开源的,多平台的C++标准实现。它提供一个C++标准库头文件的完整集合以及对RTTI的支持。它也可以作为静态库或共享库使用。

3.GNU STL C++运行库

GNU标准 C++支持库,也叫libstdc++-v3,是Android NDK中最全面的标准C++运行库。
在GNU标准C++运行库中,C++异常与C++RTTI均被支持。

指定C++运行库

Android NDK构建系统变量APP_STL可被指定需要使用的C++运行库。

APP_ABI    :=  armeabi armeabi-v7a
APP_STL   :=  system
system:   默认的微型系统C++运行库
gabi++_static:   作为静态库的Gabi++运行库
gabi++_shared:   作为共享库的Gabi++运行库
stlport_static:   作为静态库的STLport运行库
stlport_shared:   作为共享库的STLport运行库
gnustl_static:   作为静态库的GNU STL运行库
gnustl_shared:   作为共享库的STLport运行库

注意:
当C++运行库以共享库的形式使用时,应用程序需要先家长所需要的共享库,然后在加载依赖此共享库的其他原生模块。

static{
     System.loadLibrary("stlport_shared");
     System.loadLibrary("xxxxx");
}

C++异常支持

Java中异常处理很方便,考虑到性能和兼容性,默认情况下C++ Exception支持是不可用的,NDK中需要添加对C++异常的支持。
Android.mk配置

LOCAL_MODULE    :=   module
...
LOCAL_CPP_FEATURES   +=  exceptions
...
include $(BUILD_SHARED_LIBRARY)

Application.mk配置

APP_STL    :=  gnustl_shared
APP_CPPFLAGS   +=   -fexceptions

也可用同样的方式启用C++RTTI的支持。

C++RTTI支持

RTTI机制即在运行库展示对象类型信息。该机制主要执行安全类型转化。
Android.mk配置

LOCAL_MODULE    :=   module
...
LOCAL_CPP_FEATURES   +=  rtti
...
include $(BUILD_SHARED_LIBRARY)

Application.mk配置

APP_STL    :=  gnustl_shared
APP_CPPFLAGS   +=   -frtti

本文引自《Android C++高级编程》

相关文章

  • NDK支持的C++运行库

    Android平台自身带有一个微型的C++运行库支持库,称为系统运行库,但是功能有所限制,还有一些补充系统库的额外...

  • Android NDK开发之旅1--NDK介绍

    Android NDK开发之旅 目录 一、NDK产生的背景 Android平台从诞生起,就已经支持C、C++开发。...

  • jni新手笔记一:ndk编译

    Android Studio 2.2 及之后的版本,支持NDK编译c/c++代码 准备工作: 下载NDK,使用SD...

  • Android Studio NDK开发-其他编译选项

    NDK即要支持交叉编译,还需要支持各个Android版本的编译,还有一些其他情况的编译,比如c和c++等。NDK提...

  • Android CMake 学习

    一、创建新工程 打开c++支持 配置NDK路径 需要主要的是,Cmake需要r12版本以上的NDK支持 二、gra...

  • Android Studio对ndk开发调试的支持

    前言 编写C/C++代码最大的痛苦就是语法提示和调试,早期Android Studio对NDK不做支持或者支持得不...

  • Android NDK 开发(一)

    一、NDK 产生的背景 Android 平台从诞生起,就支持 C、C++ 开发。Android 的 SDK 基于 ...

  • Android Studio 2.2 gradle调用ndk-b

    Android Studio 2.2已支持gradle调用CMake或ndk-build编译C/C++代码。因个人...

  • cmake式jni开发

    向您的项目添加 C 和 C++ 代码 本文内容 下载 NDK 和构建工具 创建支持 C/C++ 的新项目 构建和运...

  • C/C++ 基础

    ndk android ndk 里platformVersion = 14表示ndk 的版本要对应上 C/C++ ...

网友评论

    本文标题:NDK支持的C++运行库

    本文链接:https://www.haomeiwen.com/subject/javssttx.html