android NDK 开发中的一些概念

一.概念

1.C标准函数库, 是所有目前符合标准的头文件(head file)的集合,以及常用的函数库实现程序, 几乎所有的 C 语言程序都是由标准函数库的函数来创建的.(C标准函数库所有平台通用,windows,android,Linux).

2.C++标准库(STL): C++中的标准程序库(简称标准库)是类库函数的集合. 标准程序库提供若干泛型容器、函数对象、泛型字符串和流(包含交互和文件I/O),支持部分语言特性和常用的函数。来自C标准库的所有头文件,以另一个名称包含在C++标准中。将原名称移去“.h”并在开头处加上“c”作为新的名称。例如“time.h”改成“ctime”。C++标准库的头文件与C标准库的头文件的唯一区别是,函数位于std::命名空间(虽然很少编译器真正如此)。标准模板程序库是C++标准程序库的子集,包含容器、算法、迭代器、函数对象等(STL).

3.extern “C”,兼容C所做的声明。因为编译器对C/C++进行编译生成汇编代码时,其函数命名方式会不同,因此当在C++中调用C库的方法时会找不到对应用的函数.

4.NDK

静态库(BUILD_STATIC_LIBRARY):静态链接库,编译生成后以.a结尾的文件.当其它链接程序或库调用时,此静态链接库代码会被直接链接到目标程序中去(库A和B,A为静态链接库,B调用A,A中的代码会直接链接到B代码中)缺点使目标体积变大,当静态库产生改变后需重新编译.

         共享库(动态链接库,BUILD_SHARED_LIBRARY):与静态库相对应,编译时不会将代码直接连接到目标程序中,单独存在,也使得不同模块或程序可以共享一个共同库文件。

参考: http://www.cnblogs.com/rainduck/p/3600472.html.

         NDKC++支持:默认情况下提供功能非常有限的C++库(System C++,/system/lib/libstdc++),不包括

         .StandardC++ Library support

         .C++exceptions support

         .RTTIsupport

当然,也有另外的一些选择

         System(default)                 ->Use the default minimalsystem C++ runtime library

         gabi++_static                 ->Use the GAbi++ runtime as a static library.

   gabi++_shared               -> Use the GAbi++ runtime as ashared library.

   stlport_static                  -> Use the STLport runtime asa static library.

   stlport_shared                ->Use the STLport runtime as a shared library.

   gnustl_static                   -> Use the GNU STL as astatic library.

gnustl_shared                ->Use the GNU STL as a shared library.

这几种C++库支持如下:

 

C++ Excepitons

C++ RTTI

Standard Library

System

No

No

No

Gabi++

Yes

Yes

No

Stlport

Yes

Yes

Yes

Gnustl

Yes

Yes

Yes

         System库只提供很少的一部分StandardLibrary头文件,DNK默认情况下采用此C++ 库,

包含头文件有cassert cctype cerrno cfloat climits cmath csetjmp csignal cstddef

cstdint cstdio cstdlib cstring ctime cwcharnew stl_pair.h typeinfo

utility除此之外不支持,如std::string,std:vector.

Gabi.另一个C++库,提供的和System一样的文件,不同的是它支持RTTI.

Stlport :STLport(http://www.stlport.org)的Android 移植版。提供完整的C++ 标准库头文件,支持RTTI,但不支持EXCEPTIONS.

Gnustl:GNU 标准的C++library. 支持更多特性。库名叫:libgnustl_shared.so,而不是其它平台通常的:libstdC++.so(见NDK文档)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值