符号errno,版本glibc_2.0未定义,在OpenSuse Linux 11.4中



我有一个第三方32位可执行文件,我需要在OpenSuse Linux 11.4上运行。当我运行它时,我会收到此错误:

文件名:重新定位错误:文件名:符号errno,版本glibc_2.0未在file libc.so.6中定义的,链接时间参考。

在/lib目录中,libc.so.6作为符号链接,指向libc-2.11.3.so。当我对此做一个objdump并为errno grep时,我得到了:

00000008 g D  .tbss 00000004 GLIBC_PRIVATE  errno
000171c0 g DF .text 0000001d GLIBC_2.0      __errno_location
000f96e0 g DF .text 0000007d GLIBC_2.0      clnt_sperrno
000f98a0 g DF .text 0000003d GLIBC_2.0      clnt_perrno
00000034 g D  .tbss 00000004 GLIBC_PRIVATE  h_errno
000ec860 g DF .text 0000001d GLIBC_2.0      __h_errno_location

我没有可执行文件的源代码。有什么方法可以自己在GLIBC的来源中添加一个补丁并仅在我的机器上解决此问题?

如果可能的话,那是什么补丁?

可执行文件是第三方版本的LMGRD,这是启动其许可证服务器的实用程序。

可执行的LDD输出看起来像这样:

linux-gate.so.1 =>  (0xffffe000)
libpthread.so.0 => /lib/libpthread.so.0 (0xf76a5000)
libc.so.6 => /lib/libc.so.6 (0xf753c000)
/lib/ld-linux.so.2 (0xf76f6000)

预先感谢。

relocation error: filename: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference.

可执行文件是第三方版本的LMGRD,该版本启动了其许可证服务器。

可执行文件一定是在古代机器上链接的。这是对问题的很好的解释。

有没有一种方法可以自己在GLIBC的来源中添加一个补丁并仅在我的计算机上解决此问题?

是的,但是您真的不应该这样做((a)复杂,(b)如果拧紧glibc,您可以轻松地使系统变得无可置素)。

与第三方供应商联系,并告诉他们由于lmgrd破裂而无法使用其产品。要求您的钱退还。您可能会惊讶于他们有多么有动力试图解决这个问题。

最新更新