我的应用程序仅在我在模拟器上运行时触发SIGILL错误。该应用程序正在使用ActionBarSherlock,最低SDK目标是API级别8.当执行本机代码时会触发故障(应用程序的其余部分,用Java编写,似乎有效)。我尝试了许多不同的模拟器设置但没有成功。没有特定的代码是错误的。如果我评论错误的函数,则SIGILL由某个其他点的其他函数触发。我使用宏LOGI在控制台上编写内容,并正确调用本机代码函数。我完全不知道发生了什么。该应用程序在两个不同的手机上运行完美(运行android 2.3.4的armv6 rev 5和运行android 4.0.3的armv7 rev 9)。本机代码是我在Windows桌面系统上编写和测试的库,它可以正常工作。 救命啊!
Android.mk
OCAL_PATH := $(call my-dir) include $(CLEAR_VARS) #LOCAL_CFLAGS := -DANDROID_NDK -Wno-psabi LOCAL_C_INCLUDES += png++/ LOCAL_C_INCLUDES += libpng/ LOCAL_C_INCLUDES += zlib/ LOCAL_MODULE := mylib LOCAL_SRC_FILES := /* a list of .cpp files... */ LOCAL_SRC_FILES += $(wildcard ./*.c) LOCAL_SRC_FILES += $(wildcard ./zlib/*.c) LOCAL_SRC_FILES += $(wildcard ./libpng/*.c) LOCAL_LDLIBS := -llog LOCAL_LDLIBS += -ljnigraphics LOCAL_CFLAGS += -marm -march=armv6 -mfloat-abi=softfp -mfpu=vfp -fpermissive -fwrapv -O2 -fexceptions include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_STL := gnustl_static APP_OPTIM := release APP_CPPFLAGS += -frtti
答案 0 :(得分:0)
我有类似的问题。我放弃了尝试模拟器;我认为这与Android模拟器上的ARMv6支持有关。由于我也在设备上工作,我不再关心这个问题。