如何在共享库中找到 C++ isfinite() 的解析位置?
Posted
技术标签:
【中文标题】如何在共享库中找到 C++ isfinite() 的解析位置?【英文标题】:How to find where C++ isfinite() is resolved from in shared libraries? 【发布时间】:2013-10-17 19:28:25 【问题描述】:我正在尝试查找为 C++ 应用程序定义 isfinite()
的位置。我一直在共享库上运行nm
到grep
为isfinite
,也递归地在共享库的共享库上运行,但到目前为止还没有找到为isfinite
提供定义的库,但我的应用程序解析符号并运行。是否有一个 linux 工具可以计算为特定可执行文件解析符号的库?
【问题讨论】:
这是一个数学库函数。使用 -lm 编译时会找到(默认情况下)。符号从 libm.a 中删除。 尝试打开编译器/链接器上的映射文件选项。这通常会列出程序中每个符号的详细信息。对于 Gcc,它类似于:-Xlinker -Map=mymapfile.txt @user2784234 我认为 strip 意味着删除 debuginfo 但不是符号。 【参考方案1】:如果您在任何模块中都找不到该符号,则很可能 isfinite 是宏而不是函数。 我认为将库函数实现为宏是合法的。 您可以反汇编调用此函数的代码并找出答案。
【讨论】:
以上是关于如何在共享库中找到 C++ isfinite() 的解析位置?的主要内容,如果未能解决你的问题,请参考以下文章