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

旧时模样 提交于 2019-12-21 03:46:30

问题


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


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/15516275/what-s-the-difference-between-gnustl-and-stlport-in-android-ndk-development

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