【问题标题】:Building static library in aosp在aosp中构建静态库
【发布时间】:2019-10-25 10:07:12
【问题描述】:

我正在尝试在 aosp 中构建一个静态库,然后由另一个程序使用。

Android.bp 为静态库如下:

cc_library_static {
    name: "libabc",

    srcs: [
        "src/abc.c",
        "src/abcd.c",
    ],

    include_dirs: [
        "my_folder/inc",
    ],
    vendor: true,
}

虽然构建成功,但我无法在输出文件夹中找到我的 libabc.a

我是否必须在 PRODUCT_PACKAGES 中添加 libabc.a 才能将其添加到构建中?我在这里错过了什么?

【问题讨论】:

  • 为什么要在设备上安装静态库?只要PRODUCT_PACKAGES 中的包依赖于它,Soong 就会构建libabc
  • @Simpl 那么它如何将我的静态库链接到我的示例程序?在构建我的示例程序时,我收到链接错误。所以我想我必须包含 libabc.a 到 srcs 的路径
  • 我确实在 Android.bp 的 static_libs 部分添加了 libabc 用于示例程序
  • libabc 添加到您的模块static_libs 是正确的。请附上您的链接器错误。
  • @Simpl 它抛出“错误:对functions_in_libabc的未定义引用”

标签: android-source android-soong


【解决方案1】:

如果没有看到消息来源,很难判断。我的第一个猜测是您的构建配置很好,functions_in_libabc 不在您的srcs 列表中列出的任何文件中。

您可以在out/soong/.intermediates/ 中找到libabc.a 并检查它是否包含您缺少的参考。

nm $(find $ANDROID_BUILD_TOP/out/soong/.intermediates -name 'libabc.a')

根据libabc,您在模块中所要做的就是将其添加到static_libs 列表中。

cc_binary {
    name: "my-module",
    srcs: [ "main.cpp" ],
    static_libs: [ "libabc" ],
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2018-04-16
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多