系统相关
首页 > 系统相关> > 在opensuse Linux 11.4中,符号errno,版本GLIBC_2.0未定义

在opensuse Linux 11.4中,符号errno,版本GLIBC_2.0未定义

作者:互联网

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

filename:重定位错误:文件名:符号errno,版本GLIBC_2.0未在文件libc.so.6中定义,带有链接时间参考.

在/ lib目录中,libc.so.6作为符号链接,指向libc-2.11.3.so.当我对此进行objdump和grep for errno时,我得到了这个:

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的第三方版本,即启动其许可证服务器的实用程序.

Executable的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.

The executable is third-party’s version of lmgrd, the utility that starts their license server.

该可执行文件必须已在古老的机器上链接.这是一个很好的explanation问题.

Is there a way I can add a patch myself to the source of glibc and fix this problem locally on my machine alone?

是的,但是你真的不应该这样做(它是(a)复杂的,并且(b)你可以轻松地使你的系统无法启动,如果你搞砸了你的glibc).

联系第三方供应商并告诉他们由于lmgrd损坏您无法使用他们的产品.请你退钱.你可能会感到惊讶他们可能会试图解决这个问题.

标签:opensuse,linux,glibc
来源: https://codeday.me/bug/20190831/1772240.html