【问题标题】:Post-compile, pre-link build step in Android.mkAndroid.mk 中的后编译、预链接构建步骤
【发布时间】:2012-12-09 14:58:38
【问题描述】:

我需要使用LOCAL_SRC_FILES 中包含的源构建的几个目标文件创建一个带有ar 的库,然后在构建最终库时链接它。

这可能吗?如果可以,我该怎么做?

我用它的扩展变体替换BUILD_SHARED_LIBRARY,但兔子洞太深了(即我还没有那么绝望)。

我想这样做的原因是因为我已经将几个小型库合并为一个并尝试将其构建为一个整体。我知道将它们分隔在不同的模块中,使用它们自己的 Android.mk 文件构建为 stat 是一个更好的解决方案,但我的时间很短。

编辑:问题的前提不再有效,因为我忘记将一些库的源文件添加到Android.mk文件中,而只添加了主图书馆。同时,我将依赖项的标头添加到LOCAL_C_INCLUDES,这样它们就变成了链接时依赖项,而不是我想要的编译时依赖项。因此我实际上不需要在编译和链接之间建立一个库。

改写后的问题:

是否可以,如果可以,如何向 Android.mk 文件添加自定义构建步骤,该文件在源文件编译之后但链接之前执行它们一起进入最终的库/可执行文件?

【问题讨论】:

    标签: android android-ndk android-build custom-build-step


    【解决方案1】:

    您始终可以将预编译的对象或库添加到您的链接命令中,例如

    LOCAL_LDLIBS += ../external/obj1.o /full/path/obj2.o /other/path/libOther.a
    

    【讨论】:

    • 感谢您的提示,但这是我的错误。请查看更新后的问题。
    • 那么问题到底是什么?创建静态库不是写include $(BUILD_STATIC_LIBRARY)?为什么?也许您缺少的部分是您不需要为每个库目标创建一个单独的 Android.mk 文件。
    • 问题是我是否以及如何在编译和链接之间执行自定义步骤。现在我发现了我的错误,我没有任何真正的需要,这只是出于好奇。对我之前草率的改写感到抱歉。
    • 能否请您详细说明不需要单独的 makefile?
    • 如果您查看 two-libs NDK 示例,您会发现单个 Android.mk 文件用于从 first.c 构建静态库以及来自second.clibtwolib-first.a 的共享库。同样的方式,您可以根据需要构建任意数量的静态库,以及任意数量的共享库——全部在一个 Android.mk 中。
    猜你喜欢
    • 2013-03-29
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多