0

我正在尝试将一个模块导入我的项目。

模块中的 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 由 ndk-build 构建

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)

当我运行 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.

我不明白为什么会出现这种循环依赖。我遵循了正确的语法。

4

2 回答 2

1

在包含 $(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)
于 2015-09-03T07:18:07.623 回答
0

我的错误是 LOCAL_MODULE_FILENAME 的值。它必须是 libfromhere1 而不是 fromhere1。ndk 只是将 .so 后缀添加到给定名称,但它不会添加 lib 前缀。总是自己给名字比让 ndk 为你命名要好。

但我不明白为什么会因此产生循环依赖。

于 2015-06-10T15:24:41.957 回答