sprof 如何找到我的共享库

Posted

技术标签:

【中文标题】sprof 如何找到我的共享库【英文标题】:How can sprof locate my shared library 【发布时间】:2012-03-07 19:08:25 【问题描述】:

我在 /tmp 文件夹中创建了一个共享库“mylib.so”。我想分析 mylib.so。 为此,我采取了以下步骤

    导出 LD_PROFILE_OUTPUT=$PWD 导出 LD_PROFILE=mylib.so 导出 LD_LIBRARY_PATH=/tmp 执行 my_app,它与 mylib.so 链接

在这 4 个步骤之后,我“应该”在 /tmp 文件夹中有一个 mylib.so.profile。但没有这样的文件。我怀疑 sprof 无法找到 mylib.so。我如何告诉 sprof 在 /tmp 文件夹中查找 mylib.so? 我正在使用 redhat 企业版 linux 5.0。

【问题讨论】:

【参考方案1】:

以上所有步骤均有效。我的错误是共享库被称为 mylib.so.1 而不是 mylib.so。我在 my_app 上运行 ldd,它显示 my_app 需要 mylib.so.1。 然后我更改了 export LD_PROFILE=mylib.so.1 一切正常。

【讨论】:

以上是关于sprof 如何找到我的共享库的主要内容,如果未能解决你的问题,请参考以下文章

如何在共享库中找到 C++ isfinite() 的解析位置?

Linux:为啥加载器会找到我的共享库?

如何在 Linux 上的 C++ 程序中使用共享库(在本例中为 JsonCpp)?

如何使共享库符号强大?

共享库如何免受利用?

如何在 QT 中将共享库添加到我的库项目中