在远程系统上使用带有 Rust-Analyzer 的 VScode,“未找到定义”缺少 glibc?

在远程系统上使用带有 Rust-Analyzer 的 VScode,“未找到定义”缺少 glibc?

因此,我正在使用 VSCode 作为我的 IDE 来使用 Rust。我遇到的一个问题是 Rust-Analyzer,它似乎是目前推荐的 Rust 支持扩展。

我有两个不同的系统,我经常在它们上面进行远程工作。在第一个系统中,我在远程服务器上安装了 Rust-analyzer,没有任何问题。所有功能似乎都按预期运行。第二个系统则不然。我比较了两个远程系统的所有设置,它们 100% 匹配。

不同之处在于glibc文件不会出现在第二个系统中,而它们出现在第一个系统中。因此,我glibc使用 apt 进行安装,尽管我确信它已经在那里,因为我相信它glibc是软件包的一部分build-essentials

第一个系统是Ubuntu 18.04,第二个系统是Ubuntu Server 20.04。

运行 ldd --version 结果是:

第一个系统:

:~/Development/rust$ ldd --version
ldd (Ubuntu GLIBC 2.27-3ubuntu1.4) 2.27
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

第二系统:

:~/dev/test-dcop$ ldd --version
ldd (Ubuntu GLIBC 2.31-0ubuntu9.7) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

因此它似乎安装得很好,但我缺少目录libc*中的文件/lib

第一个系统:

:~/Development/rust$ find /lib -iname 'libc*.so'
/lib/i386-linux-gnu/libcidn-2.27.so
/lib/i386-linux-gnu/libcrypt-2.27.so
/lib/i386-linux-gnu/libc-2.27.so
/lib/x86_64-linux-gnu/libcidn-2.27.so
/lib/x86_64-linux-gnu/libcrypt-2.27.so
/lib/x86_64-linux-gnu/libc-2.27.so

第二系统:

:~/dev/test-dcop$ find /lib -iname 'libc*.so'
:~/dev/test-dcop$ 

对于第二个系统则没有。通过我的研究,我发现了几篇关于 VSCode 需要这些库的帖子。

我该如何解决这个问题?

答案1

Ubuntu 18 和 Ubuntu 20 之间的两个系统进行了大量更新,因此库可能已被移动或重命名到 /lib 之外的其他位置——因为编译器/构建库是用户空间,几乎肯定不属于那里,而是属于 /usr/lib 或类似位置。

回顾答案,这完全是推测性的猜测,但也许是一个开始的地方,它让我想起了我遇到的一个类似的问题。

历史上曾有一个 RUST 语言分析器包当前的一个(我忘记了名字),我记得另一个包有一个听起来相当无害的名字“一个很好的 Rust 功能”,片段或类似的东西,当然它有无数的星星,所以我点击了它。

但是在说明中明确列出了并非所有软件包都兼容,即高地场景,“您必须选择一个”......如果同时安装了两个软件包,则都不起作用。

所以我的意思是,你可能在 vscode 中有另一个插件正在干扰或混淆你的第二个环境。

您能否从 vscode 工作区和用户 settings.json 中发布当前安装在两个版本中的扩展列表?

https://code.visualstudio.com/docs/getstarted/settings

比较两个系统上的这些文件,并确保它们确实设置正确..例如,当您使用 settings.json 修复第二台机器时,它可能会损坏您的第一台机器。

相关内容