J'ai une application qui comprend une bibliothèque initialement compilée pour la version 3 de l'Android NDK. L'application a été mis de côté pendant un moment, et maintenant j'essaie de le ressusciter sur la dernière version (Windows 64 bit r8e) du NDK. J'ai corrigé la plupart des petites bizarreries, mais j'ai des problèmes de compilation pour armeabi. Plus précisément, j'obtiens une erreur "erreur de verrouillage des instructions". De certaines recherches, j'ai compris que cet assembly n'est pas valide pour arm - et en fait il compile bien si je mets APP_ABI en x86 - mais ce que je ne comprends pas c'est pourquoi il génère ce qui semble être du code x86 si J'ai choisi le bras à construire, d'autant plus que le code de bras r3 peut être généré à partir des mêmes fichiers .cpp. Merci.Mauvaise instruction 'lock' compilant pour armeabi avec le NDK Android
Application.mk
APP_STL := stlport_static
APP_MODULES := DM
APP_CPPFLAGS := -w -g
APP_ABI := armeabi
include $(call all-subdir-makefiles)
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# STLPORT_BASE := $(NDK_WRAPPERS_BASE)/stlport
LOCAL_CFLAGS += -D__NEW__ \
-DANDROID \
-DOS_ANDROID
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib \
-ldl \
-lGLESv1_CM \
-lEGL \
-llog
LOCAL_MODULE := DM
LOCAL_SRC_FILES := \
sample/test/Test.cpp
Sortie
ndk-build.cmd V=1
"Compile++ thumb : DM <= Test.cpp
D:/Projects/testProj/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/armeabi/objs/sample/test/Test.o.d -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -fno-rtti -mthumb -Os -g -DNDEBUG -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -ID:/Projects/testProj/android-ndk-r8e/sources/cxx-stl/stlport/stlport -ID:/Projects/testProj/android-ndk-r8e/sources/cxx-stl//gabi++/include -DANDROID -D__NEW__ -DANDROID -DOS_ANDROID -Wa,--noexecstack -frtti -w -g -ID:/Projects/testProj/android-ndk-r8e/platforms/android-9/arch-arm/usr/include -c jni/sample/test/Test.cpp -o ./obj/local/armeabi/objs/sample/test/Test.o
C:\Temp\ccIqfvxp.s: Assembler messages:
C:\Temp\ccIqfvxp.s:474: Error: bad instruction `lock'
C:\Temp\ccIqfvxp.s:474: Error: immediate expression requires a # prefix -- `add
r3,[r0,#4]'
C:\Temp\ccIqfvxp.s:531: Error: bad instruction `lock'
C:\Temp\ccIqfvxp.s:531: Error: immediate expression requires a # prefix -- `add
r3,[r4,#4]'
make: *** [obj/local/armeabi/objs/sample/test/Test.o] Error 1