【问题标题】:Android - Native code trigger a SIGILL only on emulatorAndroid - 本机代码仅在模拟器上触发 SIGILL
【发布时间】: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


【解决方案1】:

我遇到了类似的问题。我放弃了尝试模拟器;我认为这与 Android 模拟器上的 ARMv6 支持有关。由于我的也在设备上工作,我不再关心这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2023-03-25
    • 2020-07-18
    • 2011-04-17
    • 2021-06-30
    • 1970-01-01
    • 2018-05-11
    相关资源
    最近更新 更多