简体   繁体   English

Android:加载预建库-循环依赖关系下降

[英]Android : Loading pre-built library - Circular dependency dropped

I am trying to import a module into my project. 我正在尝试将模块导入我的项目。

Android.mk in module: Android.mk中的模块:

LOCAL_PATH := $(call my-dir)

include $(CEAR_VARS)
LOCAL_MODULE := fromhere1
LOCAL_MODULE_FILENAME := fromhere1
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libfromhere.so
include $(PREBUILT_SHARED_LIBRARY)

libfromhere.so is built by ndk-build libfromhere.so由ndk-build构建

Android.mk in my project: Android.mk在我的项目中:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)


LOCAL_MODULE    := native
LOCAL_MODULE_FILENAME  := libnative
LOCAL_SRC_FILES := native.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/
LOCAL_SHARED_LIBRARIES := fromhere1
include $(BUILD_SHARED_LIBRARY)


$(call import-module,module)

When I run ndk-build, I get error 当我运行ndk-build时,出现错误

[arm64-v8a] Compile        : native <= native.c
make: Circular /home/raghuram/DS-5-Workspace/helloworld/obj/local/arm64-v8a/libnative.so <- /home/raghuram/DS-5-Workspace/helloworld/obj/local/arm64-v8a/libnative.so dependency dropped.
[arm64-v8a] SharedLibrary  : libnative.so
aarch64-linux-android-g++: error: /home/raghuram/DS-5-Workspace/helloworld/obj/local/arm64-v8a/libnative.so: No such file or directory
make: *** [/home/raghuram/DS-5-Workspace/helloworld/obj/local/arm64-v8a/libnative.so] Error 1.

I don't understand why that circular dependency is arising. 我不明白为什么会产生这种循环依赖。 I followed proper syntax. 我遵循正确的语法。

After include $(PREBUILT_SHARED_LIBRARY) you have to clear the variable may be you are again prebuilding another library... this stuff solved my issue :) 在包含$(PREBUILT_SHARED_LIBRARY)之后,您必须清除变量,可能是您正在重新构建另一个库...这东西解决了我的问题:)

LOCAL_PATH := $(call my-dir)

include $(CEAR_VARS)
LOCAL_MODULE := fromhere1
LOCAL_MODULE_FILENAME := fromhere1
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libfromhere.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CEAR_VARS)

LOCAL_MODULE := fromhere2
LOCAL_MODULE_FILENAME := fromhere2
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libfromhere2.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CEAR_VARS)

My mistake is the value of LOCAL_MODULE_FILENAME. 我的错误是LOCAL_MODULE_FILENAME的值。 It must be libfromhere1 instead of fromhere1. 它必须是libfromhere1而不是fromhere1。 ndk just puts .so suffix to the given name but it won't put lib prefix. ndk只是将.so后缀添加到给定名称,但不会放置lib前缀。 Always it is better to give name by yourself than letting ndk name it for you. 总是给自己起名字总比让ndk为你起名字好。

But I didn't understand why circular dependency arose because of that. 但是我不明白为什么会因此而产生循环依赖。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM