我想知道他们的表现/稳定性是否彼此不同,以及他们的许可证简称。我们欢迎真实世界的经验。android ndk开发中gnustl和stlport有什么区别?
回答
截至昨天(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定义的全局变量的多个副本,并可能导致内存泄漏或损坏
IMPORTANT:使用NDK工具链直接有严重的局限性: 您将无法使用任何C++ STL(无论是STLport或 GNU libstdC++)。也没有例外,也没有RTTI。
NDK r9d,docs/STANDALONE_TOOLCHAIN.html:您可以指定--stl = stlport来复制libstlport而不是libgnustl。请注意, 要与共享库链接,在这种情况下,您必须明确使用-lstlport_shared
,就像您需要使用-lgnustl_shared
来处理GNU libstdC++的情况一样。 –
2014-07-18 17:56:02
另外,gnu-stl指定了一个GPL v3的扩展,只要库代码没有改变,它允许实践中的闭代码应用程序将其用作共享甚至静态链接。 – 2014-07-18 18:02:26
- 1. ndk-build和android应用程序有什么区别?
- 2. 在开源开发中,补丁和git commit有什么区别?
- 3. Android开发中Bundle和JSONObject的区别是什么?
- 4. 有什么区别`和$(Bash中有什么区别?
- 5. Android NDK开发
- 6. STLPort和SGI STL之间的区别
- 7. Android应用程序开发中的Mysql和SQLite数据库有什么区别?
- 8. Android开发中的平台工具和SDK工具有什么区别?
- 9. Android JPEG和libjpeg有什么区别?
- 10. android:gravity和android有什么区别:layout_gravity
- 11. android:layout_width和android有什么区别:width
- 12. Android:'orientation'和'screenLayout'有什么区别?
- 13. android的abc.db和abc.sqlite有什么区别?
- 14. Android。 ShapeDrawable和GradientDrawable有什么区别?
- 15. 发布和迭代有什么区别?
- 16. 燕尾和并发有什么区别?
- 17. 游戏开发与业务开发有什么区别?
- 18. 开发Drupal模块和WordPress插件有什么区别?
- 19. iPhone游戏开发时使用CALayer和UIView有什么区别?
- 20. 程序和OO开发之间有什么区别?
- 21. Scrum和敏捷开发有什么区别?
- 22. Coldfusion开发者版和企业版有什么区别?
- 23. 开发模式和生产模式有什么区别?
- 24. webpack开发和生产构建模式有什么区别?
- 25. 增量开发和分阶段交付有什么区别?
- 26. 在android layout xml文件中,“?android:”和“@android:”有什么区别?
- 27. ==和===有什么区别?
- 28. ==和===有什么区别?
- 29. 有什么区别? :和||
- 30. ==和===有什么区别?
请您详细描述不同之处。 – CoDe 2015-09-22 11:29:43