简体   繁体   中英

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

I want to know if their performance/stability differ from each other and their licenses explained in short. Real world experiences are welcomed.

As of yesterday (NDK r9d), gnustl was still more comprehensive, eg 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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM