【发布时间】:2013-03-01 14:47:33
【问题描述】:
只有当我在模拟器上运行我的应用程序时,它才会触发 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)
应用程序.mk
APP_STL := gnustl_static APP_OPTIM := release APP_CPPFLAGS += -frtti
【问题讨论】:
-
至少向我们展示 Android.mk + Application.mk ...和模拟器...您使用的是 Intel x86 还是 Arm ABI?
标签: android native-code fault