簡體   English   中英

android.mk:未找到預構建的共享庫

[英]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 文件屬於舊時代。 檢查此解決方案

Android.mk 似乎不存在

該問題通過添加解決

include $(CLEAR_VARS)

在共享庫模塊和主庫模塊之間。

這似乎是分隔模塊的標記,如以下博客文章所示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM