What' s the difference between gnustl and stlport in android ndk development?

我的梦境 提交于 2019-12-03 11:07:52

As of yesterday (NDK r9d), gnustl was still more comprehensive, e.g. support for <thread>, <future>, and some other C++11 features. Even these depend on the toolchain: you could not use the default ARM gcc 4.6 to have them enabled.

OTOH, stlport license is no-nonsense free, like the rest of AOSP, while the linking exception to GPL v3 for gnustl is not easy to understand. See https://groups.google.com/d/topic/android-ndk/OWl_orR0DRQ for some older discussion.

If you look at the NDK release notes, you will find that in terms of fixed bugs these two STL implementations were more or less on par.

I would be glad to see performance benchmarks, but personally I have never encountered a situation where STL implementation variation resolved a real bottleneck.

GNU STL is distributed under GPLv3 license which is not acceptable for some people. NDK also provides STLport and it is possible to use it instead, but it is a bit more complicated as standalone tool-chain does not include it.

By default NDK tool-chain will link your C++ shared lib's against a static version of GNU STL lib. However if you are using several shared lib's it is not acceptable to link against the static version of STL as each of your shared lib will have its own copy of STL. This will result in several copies of global vars defined in STL and may lead to memory leak or corruption

IMPORTANT : Using the NDK toolchain directly has a serious limitation: You won't be able to use any C++ STL (either STLport or the GNU libstdc++) with it. Also no exceptions and no RTTI.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!