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

コンパイルエラーの理由を見つけました。これは、LOCAL_MODULE名が他のmakefileで正しく指定されていないためです。以下は、行われた変更です。

[1] libCore.soを構築していたAndroid.mkでは、モジュール名は次のように記載されていました。

LOCAL_MODULE := Core

それ以外の

LOCAL_MODULE := libCore

[2]最後の2つのステートメントは交換されます。Makefileが最初に含まれ、次にライブラリが構築されます。

私の理解では、モジュール名の「lib」はオプションです。これはNDK内で正常に構築されていたため、疑いの余地はありませんでした。Androidソースツリーの一部として構築されたときに問題が発生しました。

于 2012-07-31T15:14:35.480 に答える