linux + 无法运行对话框实用程序 + 出现错误

linux + 无法运行对话框实用程序 + 出现错误

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​​.这应该可以解决您的所有问题。

相关内容