2014-09-22 106 views
10

想建立使用鐺,而不是GCC一個Android NDK應用,爲知道我已經嘗試了本 在Android.mk使用clang而不是gcc構建android?和鐺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 

但總是給我鏈接錯誤與標準庫。

任何幫助表示讚賞!

+2

發佈你所得到的鏈接錯誤... – JBL 2014-09-22 14:33:00

回答

13

有幾個失誤的* .mk文件:

libc++_static不是APP_STL一個適當的值,它應該是c++_static這裏。

NDK_TOOLCHAIN_VERSION沒有設置內部Android.mk時,它應被設置內部Application.mk

LOCAL_CLANG效果是內部從AOSP系統模塊,使用所述不NDK時所使用的變量。

由於您將APP_STL設置爲c++_static,因此NDK工具鏈會正確告知鏈接程序使用哪個庫,您不應該添加LOCAL_LDLIBS := -lc++_static

此外,您將APP_ABI設置爲僅armeabi-v7a,這是故意的嗎? Android也可以在其他體系結構上運行,如果你也相應地編譯你的庫,你將會在這些體系上獲得更好的性能。您可以設置APP_ABIall或架構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 

如果你繼續有麻煩Bles編譯你的代碼,請顯示你得到的確切錯誤。

+0

我正在嘗試構建pugixml。總是出現以下錯誤[arm64-v8a]編譯++:spugixmllib <= pugixml.cpp clang:for -aarch64-fix-cortex-a53-835769選項:可能只發生零次或一次! make:*** [obj/local/arm64-v8a/objs/spugixmllib/pugixml/src/pugixml.o]錯誤1。我們不能爲arm64構建pugixml?請幫忙。提前致謝。 – AdiAtAnd 2016-09-15 12:55:46

-2

建築物設置正確, 大多數情況下,這是因爲您正在使用gcc而不是叮噹聲的庫鏈接。檢查所有使用叮噹的鏈接庫!

+1

Linux上的Clang和GCC與ABI兼容... – refi64 2015-04-18 16:30:52

相關問題