【发布时间】:2014-03-08 13:55:48
【问题描述】:
我有一个需要在 OpenSuSE Linux 11.4 上运行的第三方 32 位可执行文件。 当我运行它时,我得到这个错误:
文件名:重定位错误:文件名:符号 errno,版本 GLIBC_2.0 未在带有链接时间参考的文件 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,该实用程序启动其许可证服务器。
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)
提前致谢。
【问题讨论】:
-
ldd <binary>输出什么? -
感谢您的回复,Subhasis。我已经添加了 ldd 输出。