dee*_*sky 5 debugging linker android
背景:
\n\n我的应用程序无法在链接阶段运行并收到以下消息:
\n\nlink_image[1995]... lib1.so
\n无法链接可执行文件
该应用程序依赖于几个动态库,如下所示:
\n\napp需要lib1,lib1 dlopen lib2,在lib1中有一个由app导出的符号(全局变量)。
\n\n我已经用一个简单的程序测试了 lib2,这是可以的。所以我认为失败是由于 lib1 在链接阶段造成的。(我可以保证应用程序需要的所有其他库都在当前目录中,并且“./”已添加到 LD_LIBRARY_PATH 中。我还尝试将所有库到/系统/lib)
\n\n问题:
\n\nedit1\xef\xbc\x9a\n经过更多测试,似乎链接错误是由于 main.c 中定义的 lib1 引用的全局符号造成的
\n\nAndroid 是否需要额外的构建标志来启用 main 中的引用全局变量?
\n小智 1
你必须重新编译。在此处获取适当的(分支、标签)源:
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
Run Code Online (Sandbox Code Playgroud)
如果你想走得更低,请查看 TRACE() 和 DL_ERR()。正如您将看到的,TRACE() 是预处理器定义的,因此是编译出来的。否则,您可以快速修补您自己的 debug_verbosity 值或其检查。