【问题标题】: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 的设备上运行它?您不会分享任何有关您的代码的内容,因此此时可能有很多内容。
  • 你解决了吗?我现在也遇到了同样的问题!

标签: android gcc android-ndk simd 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 示例是一个很好的入门资源,请看一下。 祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2020-02-17
    • 2018-02-27
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2018-05-29
    相关资源
    最近更新 更多