在计算集群的头节点上运行 RHEL 7.7。当我打开 VS Code 1.57.1 时,它卡在介绍屏幕上。运行 $ code --verbose
,它显示错误:/usr/lib64/libstdc++.so.6:找不到版本 GLIBCXX_3.4.20。我必须杀-9挂code
过程。 Google 告诉我,新版本的 VS Code 使用 Electron,需要更新的 GLIBCXX 版本。
/usr/lib64/libstdc++ 中安装的版本肯定是过时的,我无法更新它。但我确实有一个较新版本的 GCC,由 $ module load gcc8/8.4.0
加载。从/cm/shared/apps/gcc8/8.4.0/加载 GCC 的命令。库/cm/shared/apps/gcc8/8.4.0/lib64/libstdc++.so.6 具有请求的 GLIBCXX 版本。
我尝试在运行代码之前加载 gcc8,但这并没有改变错误。
有没有办法让 VS Code 使用 libstdc++.so.6 的替代位置?是否有更新系统范围的 libstdc++.so.6 库的替代方法?
这是来自 --verbose 的完整错误消息:
错误:/usr/lib64/libstdc++.so.6:未找到版本“GLIBCXX_3.4.20”(/usr/share/code/resources/app/node_modules.asar.unpacked/spdlog/build/Release/需要) spdlog.节点) 在 process.func [as dlopen] (electron/js2c/asar_bundle.js:5:1846)
这显示了 libstdc++ 过时的默认版本:
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
...
GLIBCXX_3.4.18
GLIBCXX_3.4.19 <----Nope, this version is too old!
GLIBCXX_DEBUG_MESSAGE_LENGTH
这表明其他 libstdc++ 库具有所需的版本:
$ strings /cm/shared/apps/gcc8/8.4.0/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
...
GLIBCXX_3.4.19
GLIBCXX_3.4.20 <--- Here it is!
GLIBCXX_3.4.21
...
GLIBCXX_3.4.25
GLIBCXX_DEBUG_MESSAGE_LENGTH
最佳答案
根据 scroveez 的建议,/usr/lib64/libstdc++.so.6
确实是旧版本的符号链接(symbolic link)。为了修复这个问题,我将"new"版本 25 库复制到 /usr/lib64/
中,并更改了符号链接(symbolic link)以指向较新的版本。
$ ll /usr/lib/libstdc++.so.*
lrwxrwxrwx 1 root root 18 Apr 30 2019 /usr/lib/libstdc++.so.5 -> libstdc++.so.5.0.7
-rwxr-xr-x 1 root root 739520 Nov 13 2014 /usr/lib/libstdc++.so.5.0.7
lrwxrwxrwx 1 root root 19 Jul 6 08:56 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25
-rwxr-xr-x 1 root root 934644 Mar 25 2020 /usr/lib/libstdc++.so.6.0.19
-rwxr-xr-x 1 root root 1570176 Jul 6 08:55 /usr/lib/libstdc++.so.6.0.25
$
关于visual-studio-code - 启动 VS Code 时挂起并显示 "GLIBCXX_3.4.20 not found",我可以指向非标准位置的 libstdc++.so.6 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68231387/