我遇到一个问题,包括另一个Android.mk并构建相关的共享库。
生成文件:
LOCAL_PATH := $(call my-dir)
MY_CORE_PATH := $(abspath $(LOCAL_PATH)/../..)
include $(CLEAR_VARS)
LOCAL_MODULE := Phone
LOCAL_SRC_FILES := phone.cpp
LOCAL_SHARED_LIBRARIES := libCore
include $(BUILD_SHARED_LIBRARY)
include $(MY_CORE_PATH)/Android.mk
当我编译它时,我得到一个错误,
make: *** No rule to make target 'libCore.so' needed by 'libPhone.so'. Stop.
然而,libCore.so构建没有任何问题,但是这个makefile无法正确引用。请提供有关如何解决此问题的任何建议。
NDK和Android版:android-ndk-r6,适用于Android ICS的API级别9楼。
我目前能够通过进行以下更改来解决问题。
# Modified Android.mk
LOCAL_PATH := $(call my-dir)
MY_CORE_PATH := $(abspath $(LOCAL_PATH)/../..)
# libCore
include $(CLEAR_VARS)
LOCAL_MODULE := Core
include $(MY_CORE_PATH)/Android.mk
include $(CLEAR_VARS)
LOCAL_MODULE := Phone
LOCAL_SRC_FILES := phone.cpp
LOCAL_SRC_FILES += libCore
include $(BUILD_SHARED_LIBRARY)
答案 0 :(得分:1)
我找到了编译错误的原因。这是因为在其他makefile中未正确提供LOCAL_MODULE名称。以下是所做的更改,
[1]在构建libCore.so的Android.mk中,模块名称被提及为,
LOCAL_MODULE := Core
而不是
LOCAL_MODULE := libCore
[2]最后两个陈述是互换的;首先包含Makefile,然后构建库。
我的理解是'lib'在模块名称中是可选的。我没有怀疑这是因为它在NDK中构建得很好,当它作为Android源代码树的一部分构建时会出现问题。