转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=1751
今天CrystaX终于发布了从官方NDK r7修改而来的定制版Android NDK r7。主要的变化有:
- 宽字符
Google的NDK无法很好地支持宽字符,不管是在C还是C++里。CrystaX NDK含有完全兼容标准的宽字符支持,所以可以更容易地把使用了宽字符/string/stream的现有代码和新代码移植过去。 - 新的4.6.3工具链
从r7-crystax-1开始,CrystaX NDK包含了两个版本的编译器工具链:4.4.3(老的,和Google用的一样)以及4.6.3(新的)。
新工具链包含了GCC 4.6.3,它包含了Graphite framework,可以让gcc做一些高层内存优化。
为了兼容于Google的NDK,4.6.3工具链不是默认打开的。打开它需要在Application.mk里加一行:
APP_TOOLCHAIN_VERSION := 4.6.3 - C++11支持(原先被称为C++0x)
Google的NDK提供了GCC 4.4.3,虽然是很好的编译器,但不支持一些现代的特性。其中一个特性就是新的C++11国际标准(原先被称为C++0x)。C++0x的特性在GCC 4.4.3里的支持很有限。
通过CrystaX NDK,你现在就可以开始使用很多新的C++0x特性。当然,GCC 4.6.3目前还没有完整的C++11支持,但GCC团队正在努力地制作C++11支持,现在已经包含很多可用的特性(lambdas、decltype、auto等)。要知道已经支持了哪些C++0x的特性,可以看GCC C++ Support page。
要在项目中使用C++0x特性,只要在Application.mk里加一行:
APP_USE_CPP0X := true
注意在这种情况下会自动选择新的4.6.3工具链。
另外,CrystaX的版本还修正了一个官方r7的bug,现在不再需要手动拷贝libgnustl_static.a。
Comments