I need to run relatively new package on not-so-new RHEL 5.6.
I have 3rd party library (lib3rdparty.so
) which is compiled against glibc 2.6 while RHEL 5.6 have only 2.5 installed. But in the library there is only a couple of references to sched_getcpu@@GLIBC_2.6
. I ve checked it like this
readelf -s lib3rdparty.so | egrep "@GLIBC_2.[6-9]"
参看<代码>以外的新内容 GLIBC_2.5 安装。 产出
0 FUNC GLOBAL DEFAULT UND sched_getcpu@GLIBC_2.6 (62)
0 FUNC GLOBAL DEFAULT UND sched_getcpu@@GLIBC_2.6
因此,我只有一个职能从GLIBC_2.6/code>。 我现在想让图书馆认为,我有这一职能。 为此,我建立了小型图书馆(
文档,如果通过<代码>readelf进行,将显示这一表述:libcheat.so
)。 参看here。 现在我有<代码>libcheat.so
10 FUNC GLOBAL DEFAULT 11 sched_getcpu@@GLIBC_2.6
图书馆 我设法成功地建立了可执行性,与<代码>lib3rd party.so有动态联系。 如果没有这个图书馆,我可以做任何事情,因为<代码>ld <>>>>>>t 查询spplecpu
。
但是,问题在于处理这一档案:当我试图掌握档案时,我有以下错误:
./hello_world: version `GLIBC_2.6 not found (required by ./lib3rdparty.so)
因此,我认为,这是使它发挥作用的最后一步,但我不知道要做什么。 I ve试图使用/etc/ld.conf.preload
和出口LD_LIBRaire_PATH
因此,这将要求我的图书馆在他人面前装满。 但是,它赢得了胜利。 暂时通过<代码>strace加以操作,但没有有意义的产出。
任何想法?