用clang而不是gcc构建android?还有叮当的stl库而不是gnustl库?

用clang而不是gcc构建android?还有叮当的stl库而不是gnustl库?,android,gcc,c++11,android-ndk,clang,Android,Gcc,C++11,Android Ndk,Clang,我正在尝试使用clang而不是gcc构建一个android ndk应用程序,因为我知道我已经尝试过了 在Android.mk中 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

我正在尝试使用clang而不是gcc构建一个android ndk应用程序,因为我知道我已经尝试过了 在Android.mk中

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库的链接错误


感谢您的帮助

建筑设置正确,
这主要是因为您正在链接使用gcc而不是clang的库。检查是否所有链接库都使用了叮当声

您的*.mk文件中有几个错误:

libc++\u static
不是APP\u STL的合适值,这里应该是
c++\u static

NDK_TOOLCHAIN_VERSION
在Android.mk内设置时无效,应在Application.mk内设置

APP_PLATFORM    := android-9
APP_STL         := libc++_static
APP_CPPFLAGS    := -fexceptions -frtti
APP_ABI         := armeabi-v7a
LOCAL\u CLANG
是AOSP系统模块内部使用的变量,而不是使用NDK时使用的变量

由于将APP_STL设置为
c++\u static
,NDK工具链将正确地告诉链接器要使用什么库,因此不应添加
LOCAL\u LDLIBS:=-lc++\u static

另外,您将
APP_ABI
设置为仅armeabi-v7a,这是故意的吗?Android也运行在其他架构上,如果您也相应地编译库,那么您将在这些架构上获得更好的性能。您可以将
APP_ABI
设置为
all
或设置为架构列表
armeabi-v7a x86

总之:

Android.mk

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

如果您在编译代码时仍然遇到一些问题,请显示您遇到的确切错误。

发布您遇到的链接错误…我正在尝试构建pugixml。我总是得到以下错误[arm64-v8a]编译++:spugixmllib