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

标签 c++ linux

有没有办法从当前文件/模块中使用的外部变量发生链接的地方找到文件/共享对象。

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

提前致谢。

最佳答案

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

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

注意 C++ name mangling

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

当然,您也可以使用dlsym 找到某个符号的地址,给定它的名字。

关于c++ - 如何找到外部变量的链接路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9001035/

相关文章:

c++ - "\b"作为字符添加到字符串中

c - 可以将用户内存中的字符串传递给 printk 吗?

c++ - 如何在不调用实现定义的行为的情况下将二进制数据写入文件?

c++ - 对象特定的 ArrayList C++ 问题

c++ - Boost.Preprocessor 索引列表与宏

c++ - OpenCL 回写缓冲区

PHP shell tar 问题,返回代码 2

创建一个定义了 malloc_hook() 的 linux Shell

php - 带有 curl --interface 或 CURLOPT_INTERFACE 的 SO_BINDTODEVICE

php - 从日期值为 xxxx-xx-xx 的 sql 值中选择年份