我试图在我的应用程序中包含liblog以使用android日志打印。
我尝试将其包含在LOCAL_LDLIBS
LOCAL_LDLIBS := -llog
它不起作用。我收到以下错误:
error: undefined reference to '__android_log_print'
我发现使用LOCAL_LDFLAGS
的应用很少。我试过,它有效。为什么?此外LOCAL_SHARED_LIBRARIES
也适用。
答案 0 :(得分:1)
我没有明确的答案,但我最近在解决同样的问题,这是我的发现。希望有人会验证。
LOCAL_LDLIBS和LOCAL_SHARED_LIBRARIES都用于链接库。 但是LOCAL_SHARED_LIBRARIES正在寻找中间对象,如果没有找到,则正在重建库。
LOCAL_LDLIBS希望找到最终的库。
他们都在SDK和NDK下工作。
我在构建android平台时遇到了LOCAL_LDLIBS无法正常工作的问题,或者更具体的一个组件是相机。 LOCAL_LDLIBS不起作用的原因是它根本没有出现在链接命令中。
即。在组件文件夹内部构建时(在我的情况下为cameraHAL) mm showcommands(首先在main文件夹中执行.build / envsetup.sh),link命令没有指示为LOCAL_LDLIBS指定的任何内容。
为什么?
我认为逻辑是,在构建android时,你应该拥有所有的源,因此使用LOCAL_SHARED_LIBRARIES是正确的方法。
LOCAL_LDFLAGS与LOCAL_LDLIBS。 LOCAL_LDFLAGS用于传递任何标志,而不仅仅是要链接的库,因此它出现在link命令中。
LOCAL_LDLIBS仅用于链接库,仅用于NDK / SDK。