如何找到外部变量的链接路径
How to find the linking path for extern variable
是否有任何方法可以找到当前文件/模块中使用的外部变量链接的文件/shared_object。
例如:在linux中的一个大型应用程序软件中,我想找到一个特定变量的声明,该变量已在我的模块中外部化。。。
提前谢谢。
我不能完全理解你的问题,但也许dladdr应该适合你的需求。dladdr
是Gnu/Glibc的扩展。根据其手册:函数dladdr()
获取一个函数指针,并尝试解析其所在的名称和文件(它很可能与指向全局变量的指针一起使用)。
然而,我对你问题的措辞感到困惑。"变量声明"在可执行ELF二进制文件或共享对象中没有意义,因为声明本质上是源代码概念,而不是对象代码概念。实际上,大多数(全局变量的)声明都在某个头文件中。
注意C++名称篡改
如果你有应用程序的源代码,你可以使用文本工具(如grep
或etags
),甚至通过插件或MELT扩展来扩展GCC编译器,以找到这样的声明。
当然,您也可以使用dlsym
来查找某个符号的地址,给定其名称。
相关文章:
- 在 Visual Studio 2010(及更高版本)中定义包含或链接路径变量的位置
- 如何在g++中从链接库中删除路径
- CMake 链接 2 个具有相对路径的库
- 在可执行文件中使用带有符号链接的相对路径
- 链接库时的默认目录上的GCC或G 路径搜索顺序
- CMake为什么通过相对路径链接外部库
- mingw链接路径
- 如何将共享库与具有相对路径的 CMake 链接
- 使用 cmake 的不同链接和加载库路径
- 编译C++中动态链接库,存在运行路径问题
- 访问注册表数据以设置链接器和包含路径
- CMake链接路径
- C++:链接器找不到 -lcrypto,但库在路径中
- CMake:从外部项目链接共享C++对象会生成具有相对路径的二进制文件,而不是绝对路径
- 如何避免动态链接的完整路径
- 路径文件存在导致链接器错误 2028/2019
- G++添加包含和链接路径
- 如何找到外部变量的链接路径
- target_link_libraries调用后链接路径混乱
- 在cygwin下提升c++静态链接路径