【问题标题】:LOCAL_LDLIBS doesnt work but LOCAL_LDFLAGS works. why?LOCAL_LDLIBS 不起作用,但 LOCAL_LDFLAGS 起作用。为什么?
【发布时间】:2014-03-31 08:03:05
【问题描述】:

我试图在我的应用程序中包含 liblog 以使用 android 日志打印。

我尝试将它包含在LOCAL_LDLIBS

LOCAL_LDLIBS := -llog

它不起作用。我收到以下错误:

error: undefined reference to '__android_log_print'

我看到很少有应用程序使用LOCAL_LDFLAGS。我试过了,它奏效了。为什么? LOCAL_SHARED_LIBRARIES 也可以使用。

【问题讨论】:

    标签: android linker makefile dynamic-linking android-make


    【解决方案1】:

    我没有明确的答案,但我最近也在解决同样的问题,这是我的发现。希望有人会验证。

    LOCAL_LDLIBS 和 LOCAL_SHARED_LIBRARIES 都用于链接库。 但是 LOCAL_SHARED_LIBRARIES 正在寻找中间对象,如果没有找到,则正在重建库。

    LOCAL_LDLIBS 期望找到最终库。

    它们都在 SDK 和 NDK 下工作。

    我在构建 android 平台或更具体的组件之一时遇到了 LOCAL_LDLIBS 无法工作的问题,相机。 LOCAL_LDLIBS 不起作用的原因是它根本没有出现在链接命令中。

    即当您在组件文件夹中构建时(在我的情况下为 cameraHAL) mm showcommands(首先在主文件夹中执行 .build/envsetup.sh),链接命令没有指示为 LOCAL_LDLIBS 指定的任何内容。

    这是为什么呢?

    我相信逻辑是,在构建 android 时,您应该拥有所有资源,因此使用 LOCAL_SHARED_LIBRARIES 是正确的方法。

    LOCAL_LDFLAGS 与 LOCAL_LDLIBS。 LOCAL_LDFLAGS 用于传递任何标志,不仅仅是要链接的库,因此它出现在链接命令中。

    LOCAL_LDLIBS 仅用于链接库,仅在 NDK/SDK 下使用。

    【讨论】:

      猜你喜欢
      • 2014-01-26
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      相关资源
      最近更新 更多