android ndk开发中gnustl和stlport有什么区别?

时间:2013-03-20 05:50:29

标签: android stl android-ndk gnu

我想知道他们的表现/稳定性是否彼此不同,他们的许可证是否简短解释。欢迎真实世界的经历。

2 个答案:

答案 0 :(得分:3)

截至昨天(NDK r9d),gnustl仍然更加全面,例如支持< thread>,< future>以及其他一些C ++ 11功能。即使这些依赖于工具链:您无法使用默认的ARM gcc 4.6来启用它们。

OTOH,stlport许可证是免费的,与AOSP的其余部分一样,而gnustl的GPL v3链接异常并不容易理解。有关较早的讨论,请参阅https://groups.google.com/d/topic/android-ndk/OWl_orR0DRQ

如果查看NDK发行说明,您会发现就固定错误而言,这两个STL实现或多或少都是平等的。

我很高兴看到性能基准,但我个人从未遇到过STL实现变化解决了真正瓶颈的情况。

答案 1 :(得分:0)

GNU STL根据GPLv3许可证分发,某些人无法接受。 NDK还提供了STLport,可以使用它,但它有点复杂,因为独立的工具链不包含它。

  

默认情况下,NDK工具链会将您的C ++共享库与GNU STL lib的静态版本链接起来。但是,如果您使用多个共享库,那么链接静态版本的STL是不可接受的,因为每个共享库都有自己的STL副本。这将导致在STL中定义的多个全局变量副本,并可能导致内存泄漏或损坏

     

IMPORTANT:直接使用NDK工具链有一个严重的限制:       您将无法使用任何C ++ STL(STLport或       GNU libstdc ++)用它。也没有例外,也没有RTTI。