Linux 内核:3.0.13-0.27-default #1 SMP
我已经安装了“dialog”实用程序( /usr/bin/dialog ),只是将 bin 文件复制到 /usr/bin
当我尝试运行它时,出现了有关缺少 libncursesw.so.5 lib 的错误消息。
为了解决这个问题,我尝试将文件 libncursesw.so.5 复制到 /usr/lib/ 但没有帮助
• 现在,我收到另一个错误:
“error while loading shared libraries: /usr/lib/libncursesw.so.5: file too short”…
答案1
您复制的二进制文件dialog
是动态可执行文件,这意味着它在执行过程中依赖于共享库。您可以通过以下方式查看ldd
:
$ ldd "$(type -p dialog)"
linux-vdso.so.1 (0x00007fff54fb1000)
libncursesw.so.5 => /usr/lib/libncursesw.so.5 (0x00007fbc0ecee000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fbc0e9eb000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fbc0e640000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbc0ef4d000)
就我而言,这些是它所依赖的库。根据您的版本、编译选项和其他因素,您的二进制文件可能有不同的要求。
由于您手动复制了二进制文件而/usr/bin
没有执行任何依赖项解析,因此您的系统上很可能不存在这些共享库。您收到的第二条错误消息“文件太短”,表明该库有问题(可能确实太短了,它应该是符号链接而不是文件。不可能从您的库中看出您放在那里的内容单独提问)。
您不应该走这条路,而应该首先尝试dialog
从包管理器安装,而不是直接将其复制到/usr/bin
- 这样,您可以保留包的安装记录,您可以轻松接收更新,并且您将拥有它的依赖项由包管理器自动安装。由于您使用的是 OpenSUSE,请尝试删除您手动复制的文件 (/usr/bin/dialog
和/usr/lib/libncursesw.so.5
),然后运行yum install dialog
.这应该可以解决您的所有问题。