在 NDK r5 的 sources/cxx-stl/gnu-libstdc++/README 文件里,写着:
- To use it, define APP_STL to 'gnustl_static' in your Application.mk.
- See docs/CPLUSPLUS-SUPPORT.html for more details.
- This implementation fully supports C++ exceptions and RTTI.
也就是说,如果我们在 Application.mk 文件里面加上:
APP_STL := gnustl_static
就可以用 GNU libstdc++ 了,这个版本是支持 C++ exception 和 RTTI 的。(我顺便试了一下 NDK r5 里的 stlport,不支持 RTTI,使用 typeid 会报错)
注:Android Build System 总是会带上 -fno-rtti 的编译选项,但是如果你指定了 APP_STL 为 gnustl_static 的话,它会自动在后面再给你加一个 -frtti,这样 g++ 会以最后一个 flag 为准,所以就启用 RTTI 了。