【问题标题】:How to include Android.mk in another makefile如何在另一个 makefile 中包含 Android.mk
【发布时间】:2012-07-30 13:40:53
【问题描述】:

我在包含另一个 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)

【问题讨论】:

    标签: makefile android-ndk


    【解决方案1】:

    我找到了编译错误的原因。这是因为在其他 makefile 中未正确提供 LOCAL_MODULE 名称。以下是所做的更改,

    [1] 在构建 libCore.so 的 Android.mk 中,模块名称被提及为,

    LOCAL_MODULE := Core
    

    而不是

    LOCAL_MODULE := libCore
    

    [2] 最后两个语句互换;首先包含 Makefile,然后构建库。

    我的理解是模块名称中的“lib”是可选的。我不怀疑这一点,因为它在 NDK 中构建良好,当它构建为 Android 源代码树的一部分时会出现问题。

    【讨论】:

      猜你喜欢
      • 2013-10-18
      • 2023-04-06
      • 2011-06-17
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多