我正在对我的代码进行一些基于 NEON 的 SIMDization。没有 SIMDization 它工作得很好,但是在 makefile 中添加以下一行会导致它崩溃,
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
LOCAL_ARM_NEON := true
endif
有人可以通过启用 NEON 来帮助确定它为什么会崩溃,并且代码保持完全相同吗?
问候, Subhransu
我正在对我的代码进行一些基于 NEON 的 SIMDization。没有 SIMDization 它工作得很好,但是在 makefile 中添加以下一行会导致它崩溃,
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
LOCAL_ARM_NEON := true
endif
有人可以通过启用 NEON 来帮助确定它为什么会崩溃,并且代码保持完全相同吗?
问候, Subhransu
首先检查你的处理器特性,看看它是否真的有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 示例是一个很好的入门资源,请看一下。祝你好运