我想知道他們的表現/穩定性是否彼此不同,以及他們的許可證簡稱。我們歡迎真實世界的經驗。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