sprof“未找到PLTREL错误”

时间:2009-08-06 17:42:11

标签: linux sprof

我正在尝试配置我们的共享库,但每当我设置了环境变量LD_PROFILE时,我得到“在对象中找不到PLTREL”。是什么赋予了?是否有某种链接器标志我缺少或什么?在互联网上似乎没有关于此的信息。 sprof的手册页长约10个字。

2 个答案:

答案 0 :(得分:2)

根据an unanswered question on Google Groups,看起来你不是第一个遇到这个问题的人。

我认为pltrel意味着 plt-rel ;在某些ELF design notes中,

  

在代码段中创建了一个.plt部分,它是一个函数存根的数组,用于处理库调用的运行时解析。

here还有一点点:

  

我想提到的下一部分是.plt部分。这包含在我们调用共享库中的函数时使用的跳转表。默认情况下,.plt条目都由链接器初始化,不是指向正确的目标函数,而是指向动态加载器本身。因此,第一次调用任何给定的函数时,动态加载器会查找函数并修复.plt的目标,以便下次使用此.plt插槽时,我们调用正确的函数。进行此更改后,动态加载程序会调用函数本身。

听起来像是编译或汇编共享库的问题。希望更多searches to elf PLT section让您走上正轨。

答案 1 :(得分:0)

找到可能与您相关的this

  

LD_AUDIT的已知问题

     

➢LD_AUDIT不适用于没有代码的共享库。

     

➢示例ICU-4.0“libicudata.so”

     

➢错误:“找不到对象/usr/lib/libicudata.so.40中的PLTREL”

     

➢通过sed'ing -nostdlib等修补libicudata后重新编译sed -i -   “s / -nodefaultlibs -nostdlib //”config / mh-linux

似乎同样适用于LD_PROFILE