2014-09-22 2 views
10

Am пытается построить приложение для Android NDK, используя лязг вместо GCC для знаю, что я попробовал этот в Android.mkстроить андроид с clang вместо gcc? и clang stl lib вместо gnustl lib?

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

и в Application.mk

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

, но это всегда дайте мне ссылки на ошибки в библиотеке std.

Любая помощь приветствуется!

+2

Опубликовать ошибки связи, которые вы получаете ... – JBL

ответ

13

Есть несколько ошибок в ваших * .mk файлов:

libc++_static не является собственным значением для APP_STL, она должна быть c++_static здесь.

NDK_TOOLCHAIN_VERSION не имеет никакого эффекта, когда установлен внутри Android.mk, он должен быть установлен внутри Application.mk

LOCAL_CLANG является переменной, используемой внутри модулей системы из AOSP, а не при использовании НДК.

Поскольку вы устанавливаете APP_STL как c++_static, инструментальная цепочка NDK правильно сообщит компоновщику, какой lib использовать, вы не должны добавлять LOCAL_LDLIBS := -lc++_static.

Кроме того, вы установили APP_ABI только для armeabi-v7a, это специально? Android работает и на других архитектурах, и вы получите лучшую производительность, если вы также скомпилируете свои библиотеки. Вы можете либо установить APP_ABI в all или список архитектур armeabi-v7a x86 ...

В итоге:

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 

Если у вас есть несколько trou bles компилируя ваш код, пожалуйста, покажите точные ошибки, которые вы получаете.

+0

Я пытаюсь построить pugixml. Я всегда получаю следующую ошибку: [arm64-v8a] Compile ++: spugixmllib <= pugixml.cpp clang: для параметра -aarch64-fix-cortex-a53-835769: может появляться только нуль или один раз! make: *** [obj/local/arm64-v8a/objs/spugixmllib/pugixml/src/pugixml.o] Ошибка 1. Мы не можем создать pugixml для arm64? Пожалуйста помоги. Заранее спасибо. – AdiAtAnd

-2

Настройки здания верны, В основном это происходит потому, что вы связываетесь с библиотекой, которая использует gcc вместо clang. проверьте, не используется ли вся ваша связанная библиотека с помощью clang!

+1

Clang и GCC на Linux совместимы с ABI ... – refi64

Смежные вопросы