在AOSP中构建静态库

3

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

Android.bp文件用于静态库,如下所示:

cc_library_static {
    name: "libabc",

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

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

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

我是否需要将libabc.a添加到PRODUCT_PACKAGES中才能将其添加到构建中?我错过了什么吗?


1
为什么要在设备上使用静态库?Soong将在基于PRODUCT_PACKAGES的包依赖于它时构建libabc - Simpl
@Simpl 那么它如何将我的静态库链接到我的示例程序中呢?在构建我的示例程序时,我遇到了链接错误。因此,我认为我必须将libabc.a路径包含到srcs中。 - foo
我已经在 Android.bp 的 static_libs 部分为示例程序添加了 libabc 库。 - foo
libabc 添加到您的模块 static_libs 是正确的。请附上您的链接器错误。 - Simpl
@Simpl 抛出错误:"error: undefined reference to functions_in_libabc"。 - foo
1个回答

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" ],
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接