2

我有一个问题,包括另一个 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)
4

1 回答 1

1

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

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

LOCAL_MODULE := Core

代替

LOCAL_MODULE := libCore

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

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

于 2012-07-31T15:14:35.480 回答