【问题标题】:Including prebuilt static library in Android build system在 Android 构建系统中包含预构建的静态库
【发布时间】:2015-01-27 13:41:02
【问题描述】:

我需要基于预构建的静态库构建共享库。 我的makefile src/android/external/mycode/Android.mk:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := libMyStatic
LOCAL_SRC_FILES := libStatic.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := eng
LOCAL_ARM_MODE := arm
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE    := libMyShared
LOCAL_WHOLE_STATIC_LIBRARIES := libMyStatic
include $(BUILD_SHARED_LIBRARY)

我通过以下方式构建它:mmm external/mycode 并得到错误:

make: *** No rule to make target `out/target/product/generic/obj/STATIC_LIBRARIES/libMyStatic_intermediates/libMyStatic.a', needed by `out/target/product/generic/obj/SHARED_LIBRARIES/libMyShared_intermediates/LINKED/libMyShared.so'.  Stop.
make: Leaving directory `/home/test/src/android'

如果我手动执行以下操作并再次运行 mmm,它会起作用:

cp external/mycode/libStatic.a out/target/product/generic/obj/STATIC_LIBRARIES/libMyStatic_intermediates/libMyStatic.a

如果我创建一个 NDK 项目并使用这个 Android.mk 文件,我认为它在调用 ndk-build 脚本时会立即工作。所以问题与我使用Android Build系统时没有创建libMyStatic.a文件并复制到中间文件夹有关。 谁能告诉我需要设置什么才能使构建系统将静态库复制到中间文件夹?

【问题讨论】:

  • 我遇到了类似的问题。你解决了吗?你介意和我分享你的方法吗?thx
  • 也许这可以帮助你:[使用 Android.mk 链接预构建的共享库][1] [1]:stackoverflow.com/questions/14322766/…

标签: android makefile native


【解决方案1】:

修改你的 mk 文件

"LOCAL_WHOLE_STATIC_LIBRARIES := libMyStatic"

"LOCAL_LDFLAGS += -lMyStatic

【讨论】:

    【解决方案2】:

    尝试像这样构建您的静态库。

    include $(CLEAR_VARS)
    
    LOCAL_MODULE := libMyStatic
    LOCAL_MODULE_CLASS := STATIC_LIBRARIES
    LOCAL_MODULE_SUFFIX := .a
    LOCAL_SRC_FILES := libMyStatic.a
    
    include $(BUILD_PREBUILT)
    

    【讨论】:

    • 几乎完成了,具体取决于您放置预建库的位置。就我而言,它不在外部文件夹中。我必须编辑父目录中的 makefile 以使 AOSP 构建系统知道我的库、它的依赖项和它的依赖项!
    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多