如何找到extern变量的链接路径

时间:2012-01-25 10:23:05

标签: c++ linux

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

例如:在linux中的大型应用程序软件中,我想找到一个特定变量的声明,我已经在我的模块中进行了...

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

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

请注意C++ name mangling

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

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