如何找到外部变量的链接路径

How to find the linking path for extern variable

本文关键字:链接 路径 变量 外部 何找      更新时间:2023-10-16

是否有任何方法可以找到当前文件/模块中使用的外部变量链接的文件/shared_object。

例如:在linux中的一个大型应用程序软件中,我想找到一个特定变量的声明,该变量已在我的模块中外部化。。。

提前谢谢。

我不能完全理解你的问题,但也许dladdr应该适合你的需求。dladdr是Gnu/Glibc的扩展。根据其手册:函数dladdr()获取一个函数指针,并尝试解析其所在的名称和文件(它很可能与指向全局变量的指针一起使用)。

然而,我对你问题的措辞感到困惑。"变量声明"在可执行ELF二进制文件或共享对象中没有意义,因为声明本质上是源代码概念,而不是对象代码概念。实际上,大多数(全局变量的)声明都在某个头文件中。

注意C++名称篡改

如果你有应用程序的源代码,你可以使用文本工具(如grepetags),甚至通过插件或MELT扩展来扩展GCC编译器,以找到这样的声明。

当然,您也可以使用dlsym来查找某个符号的地址,给定其名称。