NDK Android的 - 不能在同一时间建立的ARMv5和V7 [英] NDK Android - Can't build ARMv5 and V7 at the same time
问题描述
我现在面临一个奇怪的问题。
我建立一个共享库我的Android应用程序。
我不能同时既建立的ARMv5和ARMv7。
如果我这样做,我得到了很多错误,在对第二次运行我的源文件(当NDK构建的ARMv7 LIB),如:
FinderPatternInfo.o:previous定义在这里
多重定义...
我的 Application.mk
APP_ABI:= armeabi armeabi,V7A
APP_PLATFORM:=机器人-8
APP_STL:= stlport_static
APP_CPPFLAGS + = -fexceptions
它完美,如果我只设置APP_ABI:= armeabi或APP_ABI:= armeabi-V7A ..
你知道吗?
感谢你的帮助,
编辑:Android.mk
LOCAL_PATH:= $(叫我-DIR)
包括$(CLEAR_VARS)
LOCAL_MODULE:= MyModule的MY_LOCAL_INCLUDED_FILES + = $($通配符(LOCAL_PATH)/ *高)
MY_LOCAL_INCLUDED_FILES + = $($通配符(LOCAL_PATH)/ *。HPP)
MY_LOCAL_INCLUDED_FILES + = $($通配符(LOCAL_PATH)/ BIGINT / *高)
......(很多包括)LOCAL_C_INCLUDES:= $(SUBST JNI /,$(MY_LOCAL_INCLUDED_FILES))MY_LOCAL_SRC_FILES + = $($通配符(LOCAL_PATH)/ * C)
MY_LOCAL_SRC_FILES + = $($通配符(LOCAL_PATH)/ *。CPP)
MY_LOCAL_SRC_FILES + = $($通配符(LOCAL_PATH)/ BIGINT / * C)
....(很多cpp文件)LOCAL_SRC_FILES:= $(SUBST JNI /,$(MY_LOCAL_SRC_FILES))LOCAL_CFLAGS:= -DNO_ICONV包括$(BUILD_SHARED_LIBRARY)
而Android系统让您解析一次Android.mk为每一个目标,所以你的 MY_LOCAL_SRC_FILES 获取全套所有的。 c和.cpp文件两次当有两个目标,但每次只有一个时,有一个单一的目标。
如果您的第一个 MY_LOCAL_SRC_FILES 分配使用:=代替+ =,我认为这将解决这个问题。
I'm facing a weird problem. I'm building a shared library for my Android application.
I can't build both armv5 and armv7 at the same time. If I do so, I get a lot of errors on my source files at the second run (when the ndk build the armV7 lib) like:
FinderPatternInfo.o: previous definition here
multiple definition of ...
My Application.mk
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-8
APP_STL := stlport_static
APP_CPPFLAGS += -fexceptions
It works perfectly if I only set APP_ABI := armeabi or APP_ABI := armeabi-v7a..
Any idea ? Thank you for your help,
EDIT: Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyModule
MY_LOCAL_INCLUDED_FILES += $(wildcard $(LOCAL_PATH)/*.h)
MY_LOCAL_INCLUDED_FILES += $(wildcard $(LOCAL_PATH)/*.hpp)
MY_LOCAL_INCLUDED_FILES += $(wildcard $(LOCAL_PATH)/bigint/*.h)
... (many includes)
LOCAL_C_INCLUDES := $(subst jni/, , $(MY_LOCAL_INCLUDED_FILES))
MY_LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/*.c)
MY_LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/*.cpp)
MY_LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/bigint/*.c)
.... (many cpp files)
LOCAL_SRC_FILES := $(subst jni/, , $(MY_LOCAL_SRC_FILES))
LOCAL_CFLAGS := -DNO_ICONV
include $(BUILD_SHARED_LIBRARY)
The Android make system parses your Android.mk once for each target, so your MY_LOCAL_SRC_FILES gets a full set of all of your .c and .cpp files twice when there are two targets, but only one of each when there's a single target.
If your first MY_LOCAL_SRC_FILES assignment used := instead of +=, I think it would fix the problem.
这篇关于NDK Android的 - 不能在同一时间建立的ARMv5和V7的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!