我有一个完美的NDK项目,使用最新的NDK r10d和GCC 4.9工具链 . 我've decided to try building it with clang instead. I'已在Application.mk中设置 NDK_TOOLCHAIN_VERSION := clang ,并将 APP_STL := gnustl_static 替换为 APP_STL := c++_static . 我没有't make any other adjustments, because upon Googling the matter for a while, I decided I don' t需要任何 . 我已经成功编译了所有源代码,但是链接会为每个目标文件抛出一组3个错误(错误消息以粗体显示):

c:/Development/Android_SDK/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.8 /../../ .. /../arm-linux-androideabi/bin\ld.exe:错误:./ obj / local / armeabi-v7a / objs / native_lib / main.o:1:3:无效字符c:/ Development / Android_SDK / android -ndk-R9 /工具链/臂-Linux的androideabi-4.8 /预建/窗口-x86_64的/ LIB / GCC /臂-Linux的androideabi / 4.8 /../../../../臂-Linux的androideabi /bin\ld.exe:error:./obj/local/armeabi-v7a/objs/native_lib/main.o:1:3:语法错误,意外$ end c:/ Development / Android_SDK / android-ndk-r9 /工具链/臂-Linux的androideabi-4.8 /预建/窗口-x86_64的/ LIB / GCC /臂-Linux的androideabi / 4.8 /../../../../臂-Linux的androideabi / BIN \ LD . exe:错误:./ obj / local / armeabi-v7a / objs / native_lib / main.o:不是对象或存档

这在发布( APP_OPTIM := release APP_CFLAGS := -O3 )中发生,但在调试中发生 notAPP_OPTIM := debug APP_CFLAGS := -O0 -g -gdwarf-2 ) . 使用调试版本,一切都很好!

这是我的整个Application.mk:

APP_OPTIM := release
APP_CFLAGS := -O3 -flto -fwhole-program

APP_STL := c++_static

APP_CPPFLAGS += -fexceptions -frtti -std=c++11 -rdynamic -funwind-tables
APP_CFLAGS   += -Wno-deprecated-declarations -rdynamic -funwind-tables -Wno-deprecated-register

GLOBAL_ARM_MODE := arm
APP_ABI := armeabi-v7a
APP_PLATFORM := android-15
NDK_TOOLCHAIN_VERSION := clang
APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti
#Position-independent executable
APP_PIE := true

APP_MODULES := native_lib

这可能是什么问题?请注意,它使用来自GCC 4.8的 ld ,这是正确的吗?

P. S.这是在Windows x64上 .