mips64el-linux-android-g ++:错误:无法识别的命令行选项' -mfpu = neon'

时间:2017-03-29 13:36:18

标签: c++ opencv android-ndk

我正在尝试运行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/Fr‌​amework/nviso/libs/a‌​rmeabi-v7a/libfreeim‌​age-3.14.so
include $(PREBUILT_SHARED_LIBRARY)

我尝试从application.mk文件中删除APP_CFLAGS + = -mfpu = neon但是它在cpp文件中提供了所有编译错误..

另外要提到的是,上面的代码在Eclipse中完美运行......但问题只出现在Android Studio中

任何帮助将不胜感激。谢谢提前..

2 个答案:

答案 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,它开始工作,应用程序运行.. 谢谢大家...