LOCAL_LDLIBS不起作用,但LOCAL_LDFLAGS起作用。为什么?

LOCAL_LDLIBS不起作用,但LOCAL_LDFLAGS起作用。为什么?

问题描述:

我试图在我的应用程序中包含liblog以使用android日志打印。LOCAL_LDLIBS不起作用,但LOCAL_LDFLAGS起作用。为什么?

我试过,包括它与LOCAL_LDLIBS

LOCAL_LDLIBS := -llog 

它不工作。我得到下面的错误:

error: undefined reference to '__android_log_print' 

我使用LOCAL_LDFLAGS而不是看几个应用程序。我试过了,它工作。为什么?另外LOCAL_SHARED_LIBRARIES也适用。

我没有确切的答案,但我最近在和同样的问题作斗争,这是我的发现。希望有人会验证。

LOCAL_LDLIBS和LOCAL_SHARED_LIBRARIES都用于链接库。 但是,LOCAL_SHARED_LIBRARIES正在查找中间对象,如果未找到该库正在重建。

LOCAL_LDLIBS希望找到最终的图书馆。

它们都在SDK和NDK下工作。

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

I.e.当你在组件文件夹(在我的情况下是cameraHAL)中创建内存文件时,show命令(首先在主文件夹中执行。build/envsetup.sh),链接命令没有指定任何为LOCAL_LDLIBS指定的内容。

这是为什么?

我相信的逻辑是,当建立android时,你应该有所有的来源,因此使用LOCAL_SHARED_LIBRARIES是正确的路要走。

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

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