我有一个完美的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
)中发生,但在调试中发生 not ( APP_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上 .