为啥启用 NEON SIMDization 时 Android 会崩溃?信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR)
Posted
技术标签:
【中文标题】为啥启用 NEON SIMDization 时 Android 会崩溃?信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR)【英文标题】:Why Android crash when NEON SIMDization enabled? signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)为什么启用 NEON SIMDization 时 Android 会崩溃?信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR) 【发布时间】:2012-12-21 03:59:23 【问题描述】:我正在对我的代码进行一些基于 NEON 的 SIMD 化。 它在没有 SIMDization 的情况下工作得很好,但是在 makefile 中添加以下一行会导致它崩溃,
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
LOCAL_ARM_NEON := true
endif
是否有人可以通过启用 NEON 来帮助确定它崩溃的原因,并且代码保持完全相同?
问候, 苏布兰苏
【问题讨论】:
是否可以在不支持 NEON 的设备上运行它?您不会分享任何有关您的代码的内容,因此此时可能有很多内容。 你解决了吗?我现在也遇到了同样的问题! 【参考方案1】:首先检查你的处理器特性,看看它是否真的有 NEON,
并非所有基于 ARMv7 的 android 设备都支持 NEON
您可以查看处理器数据表。
根据文档,可能是您的源代码,
在您的 LOCAL_SRC_FILES 变量中列出源文件时,您现在 可以选择使用 .neon 后缀来表示您想要 在 Neon 支持下构建相应的源。例如:
LOCAL_SRC_FILES := foo.c.neon bar.c
只会在支持 NEON 的情况下构建“foo.c”。
对于构建,您的目标是 armeabi-v7a ABI 吗?你可以在你的 Android.mk 中检查它 由
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
所以检查所有这些因素,看看是什么导致了崩溃
NDK 示例是一个很好的入门资源,请看一下。 祝你好运
【讨论】:
以上是关于为啥启用 NEON SIMDization 时 Android 会崩溃?信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR)的主要内容,如果未能解决你的问题,请参考以下文章
未找到Android Studio NDK iostream文件,无法在CMakeList中启用neon
如何在 Eclipse Neon 中启用 C++11 语法?
eclipse neon 为啥没有windows builder