共享库加载时出错:libncurses.so.5。

81

我已经安装了Android Studio并尝试在其中运行我的第一个项目,但是我遇到了以下错误:

Error Output was: /home/user/android-studio/sdk/platform-tools/adb: error while loading       shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

我已经尝试运行过了。

sudo ldconfig

但这并没有帮助。我最近在使用安卓工作室之前安装了libncurses。

我该怎么做?

15个回答

147
如果未安装libncurses,请安装后重试。
对于32位二进制文件:sudo apt-get install libncurses5:i386
对于64位二进制文件:sudo apt-get install libncurses5
还需使用以下命令安装库集合:sudo apt-get install ia32-libs

8
这个真的解决了Ubuntu 20.04的问题!! - london_utku
3
我也在Ubuntu 20.04上试用过,谢谢! - Matias Ficarrotti
1
我也可以用。我正在使用Ubuntu 20.04。非常感谢。 - Trung Đoan
1
在安装软件包时我遇到了这个问题:E: Package 'ia32-libs'在 20.04 版本中无法找到安装程序。 - raian
1
我遇到了“E:无法定位软件包libncurses5:i386”的问题,通过执行“dpkg --add-architecture i386 && apt update”解决了这个问题。 - namasikanam
显示剩余2条评论

25

在加载共享库libncurses.so.5时出错

如果您看到此消息,则可能是因为您的发行版安装了更新版本的libncurses。首先找出您的发行版安装了哪个版本的libncurses:

$ ls -1 /usr/lib/libncurses*
/usr/lib/libncurses.so
/usr/lib/libncurses++.so
/usr/lib/libncurses++w.so
/usr/lib/libncursesw.so
/usr/lib/libncurses++w.so.6
/usr/lib/libncursesw.so.6
/usr/lib/libncurses++w.so.6.0
/usr/lib/libncursesw.so.6.0
在这种情况下,我们正在处理版本6,因此我们会创建两个符号链接:
$ sudo ln -s /usr/lib/libncursesw.so.6.0 /usr/lib/libncurses.so.5
$ sudo ln -s /usr/lib/libncursesw.so.6.0 /usr/lib/libtinfo.so.5

接下来,程序应该正常运行。


同样,这并没有回答问题,因为它涉及到在问题被提出时还不可用的软件。 - Thomas Dickey
8
尽管这可能不能解决原作者的问题,但它解决了我的问题,我在Arch 64上遇到了与原帖相同的错误信息。 - sweisgerber.dev
4
命令行输出:ls: cannot access '/usr/lib/libncurses*': No such file or directory。apt 告诉我 libncurses5libncurses6 都已安装。 - Tooniis
1
如果 ls 命令失败,请尝试使用 find 命令: find /usr/lib/ -name *ncurses* - PolyGlot

16

如果你完全确定已经安装了libncurses,也就是说你已经成功执行了对该库的'ls'操作,那么你可能是在运行一个32位的程序(adb),但你的64位Linux操作系统中只安装了64位的libncurses。

如果是这样,32位程序无法链接到64位库(并且无法定位它),因此你可能需要安装libcurses或ncurses(32位版本)。同样地,如果你正在运行64位adb,也许你的ncurses是32位的(这种情况可能性较小)。


2
你也可以在LD_LIBRARY_PATH中检查库文件。可能是因为你的路径设置不正确,所以无法找到该库文件。 - Paul
@Tooniis 版本号并不是架构,架构大致匹配计算机中的 CPU,而版本号则匹配“旧/新”发布。如果您在不同的架构下安装了正确的版本,则仍可能缺少库的正确架构。这只是因为 Intel 和 AMD 芯片支持多种架构,i386 用于向后兼容,而 x86_64 则是现代架构,所以才会让人感到困惑。 - Edwin Buck
我告诉过你,我已经安装了i386和amd64两种架构的版本5和6,因此Android Studio应该能够找到它所需的一切。 - Tooniis
@Tooniis 抱歉,没有看到“两种架构”的部分。在这种情况下,通常是因为在启动Android Studio之前,您的shell中缺少/配置错误的LD_LIBRARY_PATH,或者您的Android Studio维护其自己的此功能的配置。我会检查编译器选项(抱歉,Android Studio从我密集使用它的时候已经发生了很大变化,所以我不能直接指向选项)。无论如何,一旦您将/usr/lib/(32位)或/usr/lib64(64位)配置好,您应该会看到成功。 - Edwin Buck
@Tooniis 是的。Flatpack总是取消设置LD_LIBRARY_PATH,因为它是这样设计的,以便它可以设置自己的LD_LIBRARY_PATH来加载非本地安装的库。这意味着您需要找到它在哪里/如何设置,并确定是否可以附加到基本操作系统库以进行集成。https://www.mankier.com/1/flatpak-run指出“flatpak总是取消设置LD_LIBRARY_PATH”,也许--system会有所帮助,或者在其中有一个选项可以正确添加系统库而不会破坏flatpak包装。 - Edwin Buck
显示剩余2条评论

15

尝试以下内容适用于Redhat Linux 8:

sudo yum install libncurses*

2
在亚马逊实例(基于红帽)上挽救了局面。 - Marquez
这是适用于Oracle Linux的解决方案。 - Zucca
1
这对于CentOS/AlmaLinux也适用。LSI MegaCli RAID控制器命令行工具要求这样做。 - humbads

10
在Arch Linux上,您可以安装ncurses5-compat-libs AUR软件包。
顺便提一下,在Arch Wiki的android页面中提到了这一点,以防您需要安装Android Studio的其他依赖项: https://wiki.archlinux.org/index.php/Android

7
在 Fedora 28 中使用:
sudo dnf install ncurses-compat-libs

这个方法在 Fedora 30 上也行得通。2019 年发布的 Texas Instruments Code Composer Studio 9 基于 Eclipse,但在 Fedora 上默认安装的是 ncurses6,需要安装 ncurses5 才能正常运行。 - José Fonte
同样适用于CentOS 9。 - akhan

5

对于Redhat Linux,这可以帮助解决问题:

sudo yum install ncurses-compat-libs


4

我使用以下方法解决了此问题:

ln -s libncursesw.so.5  /lib/x86_64-linux-gnu/libncursesw.so.6

在Ubuntu 18.10上

1
因为我已经在我的Ubuntu 20.04上安装了libncursesw6,所以我执行了sudo apt install libncursesw6并解决了问题。因此,我另外安装了版本5而没有添加符号链接。我认为你的方法也不会有任何问题。 - Chan Kim

2
在Fedora 24上安装ncurses-compat-libs可以解决这个问题(在加载共享库libncurses.so.5时发生 unable to start adb error)。

2
在Arch Linux上,我会像这样进行修复:
sudo ln -s /usr/lib/libncursesw.so.6 /usr/lib/libtinfo.so.6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接