我正在尝试运行NDK和OpenCV相关项目。该项目建立无错误。但是当我运行应用程序时,我收到错误:
mips64el-linux-android-g ++:错误:无法识别的命令行选项' -mfpu = neon'
我的Application.mk文件如下所示:
APP_STL := gnustl_shared
APP_CPPFLAGS := -frtti -fexceptions
# NEON
APP_CFLAGS += -mfpu=neon
APP_ABI := armeabi-v7a
APP_PLATFORM := android-18
APP_OPTIM := debug
APP_MODULES := nVisoDemo-1.1
NDK_TOOLCHAIN_VERSION := 4.9
HAVE_LIB_CEVA := false # CUSTOM VARIABLE USED (NOT ANYMORE) IN Android.mk
Android.mk:
# Freeimage
include $(CLEAR_VARS)
LOCAL_MODULE := libfreeimage
LOCAL_ARM_NEON := true
#LOCAL_SRC_FILES := $(NVISO_LIBS_DIR)/libfreeimage-3.14.so
LOCAL_SRC_FILES := D:/Siddharth/StudioProjects/OpenCVDemo/nvsdk/src/main/jni/Framework/nviso/libs/armeabi-v7a/libfreeimage-3.14.so
include $(PREBUILT_SHARED_LIBRARY)
我尝试从application.mk文件中删除APP_CFLAGS + = -mfpu = neon但是它在cpp文件中提供了所有编译错误..
另外要提到的是,上面的代码在Eclipse中完美运行......但问题只出现在Android Studio中
任何帮助将不胜感激。谢谢提前..
答案 0 :(得分:1)
默认情况下,您将为每个NDK ABI构建:arm5,arm7,arm64,mips,mips64,x86和x86_64,但-mfpu=neon
仅对arm7和arm64有效。
一般情况下,对于这样的情况,您需要通过针对TARGET_ARCH_ABI
进行测试来保护体系结构特定的标志,但是对于NEON支持,只有一个标志就是这样:
LOCAL_ARM_NEON := true
将其添加到Android.mk中的每个模块。
答案 1 :(得分:0)
你好我通过以下方式解决了这个问题:
实际上@LethalProgrammer所说的是仪式。当我从Application.mk中删除“APP_CFLAGS + = -mfpu = neon”行时,它应该已经开始工作但是当我删除它时,它会在我的cpp文件中给出所有类型的错误。
问题是我正在使用命令行构建,并且我已将.so文件放在应用程序的jnilibs文件夹中,因此它构建了两次..
因此我从app的build.gradle中删除了这个 externalNativeBuild { ndkBuild { 路径'D:/Siddharth/StudioProjects/OpenCVDemo/nvsdk/src/main/jni/Android.mk' } }
所以最后从build.gradle中删除上面的代码并从application.mk文件中删除-mfpu = neon,它开始工作,应用程序运行.. 谢谢大家...