繁体   English   中英

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

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

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

截至昨天(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实现变化解决了真正瓶颈的情况。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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