Voglio sapere se le loro prestazioni/stabilità differiscono l'una dall'altra e le loro licenze spiegate in breve. Le esperienze del mondo reale sono benvenute.Qual è la differenza tra gnustl e stlport nello sviluppo di Android ndk?
risposta
A partire da ieri (NDK r9d), gnustl era ancora più completo, ad es. supporto per il thread <>, < futuro> e alcune altre funzionalità di C++ 11. Anche questi dipendono dalla toolchain: non è possibile utilizzare l'ARM gcc 4.6 predefinito per averli abilitati.
OTOH, la licenza di stlport è priva di esitazioni, come il resto di AOSP, mentre l'eccezione di collegamento a GPL v3 per gnustl non è facile da comprendere. Vedi https://groups.google.com/d/topic/android-ndk/OWl_orR0DRQ per alcune discussioni precedenti.
Se si osservano le note di rilascio di NDK, si scoprirà che in termini di bug corretti queste due implementazioni STL erano più o meno alla pari.
Sarei lieto di vedere i benchmark delle prestazioni, ma personalmente non ho mai riscontrato una situazione in cui la variazione di implementazione STL ha risolto un vero e proprio collo di bottiglia.
GNU STL è distribuito con licenza GPLv3 che non è accettabile per alcune persone. NDK fornisce anche STLport ed è possibile utilizzarlo, ma è un po 'più complicato in quanto la catena di strumenti autonoma non lo include.
Per impostazione predefinita, la catena di strumenti NDK collega le librerie condivise di C++ a una versione statica di GNU STL lib. Tuttavia, se si utilizzano diverse librerie condivise, non è accettabile il collegamento con la versione statica di STL poiché ciascuna delle librerie condivise avrà una propria copia di STL. Questo si tradurrà in più copie di Vars globali definiti in STL e può portare a perdita di memoria o di corruzione
IMPORTANT: Utilizzando la toolchain NDK ha direttamente una seria limitazione: Non sarà in grado di utilizzare qualsiasi STL C++ (sia STLport o GNU libstdC++) con esso. Inoltre senza eccezioni e senza RTTI.
NDK r9d, docs/STANDALONE_TOOLCHAIN.html: è possibile specificare --stl = stlport per copiare libstlport anziché libgnustl. Si noti che per il collegamento alla libreria condivisa, in questo caso è necessario utilizzare in modo esplicito -lstlport_shared
, proprio come è necessario utilizzare -lgnustl_shared
per il caso GNU libstdC++. –
Inoltre, gnu-stl specifica un'espansione su GPL v3, che consente in pratica all'app di codice chiuso di utilizzarla come collegamento condiviso o addirittura statico, purché il codice della libreria non venga modificato. –
- 1. Qual è la differenza tra $ @ e $ * nello script di shell?
- 2. Qual è la differenza tra Adapter e AdapterView in Android?
- 3. Qual è la differenza tra @android: e Android:?
- 4. Qual è la differenza tra Android: layout_width e Android: larghezza
- 5. Sviluppo iPhone: qual è la differenza tra un provisioning di sviluppo e distribuzione?
- 6. Qual è la differenza reale tra MVC e MVC Model2
- 7. Sviluppo incrementale NDK Android
- 8. Sviluppo NDK Android
- 9. Qual è la differenza tra un'applicazione appx e un'applicazione appxbundle?
- 10. in rotaie qual è la differenza tra la modalità di sviluppo e la modalità di produzione?
- 11. qual è la differenza tra @ id/e @ + id/in android?
- 12. Qual è la differenza tra fontFamily e typeFace in Android?
- 13. Android: Qual è la differenza tra View.inflate e getLayoutInflater(). Gonfia?
- 14. Qual è la differenza tra alcuni "strumenti Android Development/SDK"?
- 15. Qual è la differenza tra attività e intenzioni in Android?
- 16. Qual è la differenza tra hasFocus() e isFocused() in Android?
- 17. qual è la differenza tra windowActionBar e Android: windowActionBar
- 18. Android: Qual è la differenza tra Activity.runOnUiThread e View.post?
- 19. Qual è la differenza tra $ e $$?
- 20. Qual è la differenza tra {0} e +?
- 21. Qual è la differenza tra = e: =
- 22. Qual è la differenza tra ("") e (null)
- 23. Qual è la differenza tra dict() e {}?
- 24. Qual è la differenza tra Verilog! e ~?
- 25. Differenza tra librerie statiche e condivise in NDK di Android?
- 26. Qual è la differenza tra? : e ||
- 27. qual è la differenza tra [[], []] e [[]] * 2
- 28. Qual è la differenza tra " " e ""?
- 29. Qual è la differenza tra {0} e ""?
- 30. Qual è la differenza tra `##` e `hashCode`?
Potrebbe descrivere la differenza in dettaglio. – CoDe