项目使用的一个开源库更新后,发现在android平台编译出错了,因为他使用了c++11的auto特性,编译器尚未支持。
因为gcc4.8.1已经完全实现了c++11的特性,所以我需要看一下我使用的ndk支持哪些toolchain。
我使用的是ndk r8e (也是目前-2013.6月-的最新版),看一下他的toolchains目录,支持到了gcc4.7。根据他的文档,默认是使用了gcc4.6。
设置toolchain的方法是在Application.mk中设置:
NDK_TOOLCHAIN_VERSION = 4.7
为了确认是否设置成功,在ndk-build调用时增加参数V=1。即 ndk-build V=1 ..其他参数..
结果会显示:/Developer/sdks/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ -MMD -MP -MF ....
所以可以看到设置成功了。
遗憾的是,gcc4.7仍然不支持auto:'o' does not name a type (源码里的写法是:auto o = xxxxxx)
而我已经使用了最新的ndk了,只能等ndk升级到gcc4.8.1的toolchian了,或者自己去做一个,不过可花不起这个时间