1

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

我试着把它包括在LOCAL_LDLIBS

LOCAL_LDLIBS := -llog

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

error: undefined reference to '__android_log_print'

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

4

1 回答 1

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-04-08T12:56:08.317 回答