2014-09-22 7 views
10

Sto cercando di costruire un app Android NDK utilizzando clang invece di gcc, per sapere che ho provato questo nel Android.mkbuild android con clang invece di gcc? e il clang stl lib al posto di gnustl lib?

NDK_TOOLCHAIN_VERSION := clang 
LOCAL_CLANG :=true 
LOCAL_LDLIBS := -lc++_static 
LOCAL_CFLAGS := -std=c++11 

e nel Application.mk

APP_PLATFORM := android-9 
APP_STL   := libc++_static 
APP_CPPFLAGS := -fexceptions -frtti 
APP_ABI   := armeabi-v7a 

ma dammi sempre errori di collegamento con la libreria std.

Qualsiasi aiuto è apprezzato!

+2

Pubblica gli errori di collegamento che ottieni ... – JBL

risposta

13

Ci sono diversi errori nei file * .MK:

libc++_static non è un valore corretto per APP_STL, dovrebbe essere c++_static qui.

NDK_TOOLCHAIN_VERSION non ha alcun effetto quando impostato all'interno Android.mk, deve essere impostato all'interno Application.mk

LOCAL_CLANG è una variabile utilizzata all'interno moduli del sistema da AOSP, non quando si utilizza il NDK.

Poiché si imposta APP_STL come c++_static, la toolchain NDK indicherà correttamente al linker quale librerie utilizzare, non è necessario aggiungere LOCAL_LDLIBS := -lc++_static.

Inoltre, si imposta APP_ABI solo su armeabi-v7a, è apposta? Android funziona anche su altre architetture e otterrai migliori prestazioni su questi se si compila anche le librerie di conseguenza. Si sia possibile impostare APP_ABI-all o ad un elenco di architetture armeabi-v7a x86 ...

In sintesi:

Android.mk

LOCAL_CFLAGS := -std=c++11 

Application.mk

NDK_TOOLCHAIN_VERSION := clang 

APP_PLATFORM := android-9 
APP_STL   := c++_static 
APP_CPPFLAGS := -fexceptions -frtti 
APP_ABI   := all 

Se continui ad avere qualche trou per compilare il tuo codice, per favore mostra gli errori esatti che stai ricevendo.

+0

Sto provando a compilare pugixml. Sto sempre seguendo l'errore [arm64-v8a] Compile ++: spugixmllib <= pugixml.cpp clang: per l'opzione -aarch64-fix-cortex-a53-835769: può accadere solo zero o una volta! make: *** [obj/local/arm64-v8a/objs/spugixmllib/pugixml/src/pugixml.o] Errore 1. Non possiamo costruire pugixml per arm64? Per favore aiuto. Grazie in anticipo. – AdiAtAnd

-2

Le impostazioni di costruzione sono corrette, principalmente accade perché si sta collegando con la libreria che utilizza gcc anziché clang. controlla se tutta la tua biblioteca collegata usa clang!

+1

Clang e GCC su Linux sono compatibili con ABI ... – refi64