是否可以在 VS Code clangd 扩展中指定 libstdc++ 的路径?

Is it possible to specify the path to the libstdc++ in VS Code clangd extension?

我使用 VS Code 作为我的 C++ 开发的主要代码编辑器。我正在使用 Microsoft 的远程 SSH 扩展从家里访问我的办公室工作站。对于 C++ 自动完成和 linting,我使用 LLVM 的 clangd 扩展。公司政策禁止用户对工作站进行 sudo 访问,图书馆通常不是最新版本。

当我尝试启动 clangd 时,我收到以下错误消息:

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /my/path/to/clangd)

这显然意味着 libstdc++ 的版本对于我正在使用的 clangd 版本来说太旧了。通过将最新的 gcc 库(我们的编译器工具链的一部分)的位置添加到 LD_LIBRARY_PATH 然后启动 VS Code,可以轻松解决此问题。

但是,现在我在远程工作,我无法这样做,因为我的笔记本电脑上安装了 VS 代码,并且我正在使用 SSH 扩展来访问我办公室工作站上的代码。查看 clangd 的手册页,我看不到指定我想使用的 libstdc++ 路径的方法。除了在 startup/login 上将库添加到 LD_LIBRARY_PATH 之外,有没有办法绕过这个问题?

我找到了一个方法,虽然有点老套。

在 .zprofile 上导出新的 LD_LIBRARY_PATH(或等效于您的 shell。我正在使用 zsh)。确保主机中没有 VSCode 个服务器 运行。如果有,请确保将其删除。

在 settings.json 文件中添加以下行,告诉 VSCode 您希望 shell 成为登录名,交互式 shell:

"terminal.integrated.shellArgs.linux": ["-l", "-i"]

工作完成。 Clangd 现在可以找到正确的库。