如何在Android上的动态链接器中启用调试输出?

背景:

我的应用程序无法在链接阶段运行并获得以下消息:

link_image [1995] … lib1.so
无法链接可执行文件

应用程序依赖于几个动态库,如下所示:

app需要lib1,lib1 dlopen lib2,在lib1中有一个由app导出的符号(一个全局变量).

我用一个简单的程序测试了lib2,没问题.所以我认为失败是由链接阶段的lib1引起的.(我可以保证应用程序所需的所有其他库都在当前目录中,并且“./”已添加到LD_LIBRARY_PATH.我也尝试将所有库放入到/ system / lib)

题:

>如何启用链接器的调试输出获取详细错误消息?
>还有其他建议吗?

EDIT1:
经过一些更多的测试后,似乎链接错误是由libc引用的全局符号引起的,它是在main.c中定义的

Android是否需要额外的构建标志才能在main中启用引用全局变量

解决方法

你必须重新编译.在这里抓取相应的(分支,标记)源:

https://github.com/android/platform_bionic/tree/master/linker

在Android.mk中,您要将其设置为1:

# Set LINKER_DEBUG to either 1 or 0
#
LOCAL_CFLAGS += -DLINKER_DEBUG=0

如果你想降低,请查看TRACE()和DL_ERR().正如您将看到的,TRACE()是预处理器定义的,因此被编译出来.否则,您可以快速修补自己的debug_verbosity或其检查值.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...