[英]android.mk: prebuilt shared library not found
我在 SO 上看到了多個其他類似的問題,關於 android.mk 的“鏈接”問題,但沒有一個與我的問題相近。
我有一個 Android 項目,它從源代碼創建一個基本共享 C++ 庫,並且應該鏈接到另一個共享庫。
我遵循了非常清晰和基本的說明。
基本共享庫編譯得很好,但在鏈接時,它告訴我引用的共享庫無處可尋。
下面是 Android.mk 文件的源代碼:
# ./android/app/src/main/jni/Android.mk
# Set up paths
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# specify libcardios prebuilt shared library
LOCAL_MODULE := libcardios
LOCAL_SRC_FILES := $(LOCAL_PATH)/../../../../../third_party_src/cpp/libcardios/$(TARGET_ARCH_ABI)/libcardios_$(TARGET_ARCH_ABI).so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../third_party_src/cpp/libcardios/includes
include $(PREBUILT_SHARED_LIBRARY)
# main shared library
# Debug mode
NDK_DEBUG=1
# Specify C++ flags
LOCAL_CPPFLAGS := -std=c++11
LOCAL_CPPFLAGS += -fexceptions
LOCAL_CPPFLAGS += -frtti
LOCAL_CPPFLAGS += -Wall
LOCAL_CPPFLAGS += -Wextra
# Header search paths
LOCAL_CPPFLAGS += -I$(LOCAL_PATH)/../../../../../generated_src/djinni_bridge/jni
LOCAL_CPPFLAGS += -I$(LOCAL_PATH)/../../../../../generated_src/djinni_bridge/cpp
LOCAL_CPPFLAGS += -I$(LOCAL_PATH)/../../../../../generated_src/support-lib/jni
LOCAL_CPPFLAGS += -I$(LOCAL_PATH)/../../../../../generated_src/support-lib
LOCAL_CPPFLAGS += -I$(LOCAL_PATH)/../../../../../src/cpp
LOCAL_CPPFLAGS += -I$(LOCAL_PATH)/../../../../../generated_src/support-lib/cpp
LOCAL_CPPFLAGS += -I$(LOCAL_PATH)/../../../../../third_party_src/cpp
LOCAL_CPPFLAGS += -I$(LOCAL_PATH)/../../../../../third_party_src/cpp/data
# Specify source files
LOCAL_SRC_FILES += $(LOCAL_PATH)/../../../../../generated_src/djinni_bridge/jni/NativeDataBridge.cpp
LOCAL_SRC_FILES += $(LOCAL_PATH)/../../../../../ios/data_bridge_impl.cpp
LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../../../generated_src/support-lib/jni/*.cpp)
LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../../../generated_src/support-lib/cpp/*.cpp)
LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../../../generated_src/djinni_bridge/cpp/*.cpp)
LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../../../third_party_src/cpp/data/*.cpp)
LOCAL_SHARED_LIBRARIES := libcardios
# Specify module name for System.loadLibrary() call
LOCAL_MODULE := databridge
# include additional libraries
LOCAL_LDLIBS += -llog
# Telling make to build the library
include $(BUILD_SHARED_LIBRARY)
現在這是我收到的錯誤消息:
clang++: error: no such file or directory: '/Users/omatrot/Documents/sensoria_analyics/application/android/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libcardios_arm64-v8a.so'
我的印象是未找到預構建的共享庫,因此未將其復制到中間文件夾中。
這里出了什么問題?
編輯:我暫時刪除了庫以確保找到它。 如果它不存在,我有一個特定的錯誤消息。 這意味着問題在其他地方。 我還可以確認在應用程序子目錄中找不到共享庫。
我也有這個“警告?”,“錯誤?”:
make: Circular /Users/omatrot/Documents/sensoria_analyics/application/android/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libcardios_arm64-v8a.so <- /Users/omatrot/Documents/sensoria_analyics/application/android/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libcardios_arm64-v8a.so dependency dropped.
這是否意味着共享庫最終從 obj 目錄中刪除?
Android.mk 文件屬於舊時代。 檢查此解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.