在计算集群的头节点上运行RHEL 7.7。当我打开VS Code 1.57.1时,它挂在intro屏幕上。使用$ code --verbose运行时,它显示错误: /usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.20 not found。我必须终止-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代码使用libstdc++.so.6的替代位置?除了更新系统范围的libstdc++.so.6库之外,还有其他方法吗?
这是来自--verbose的完整错误消息:
错误: /usr/lib64/libstdc++.so.6:找不到版本`GLIBCXX_3.4.20(位于process.func as dlopen的/usr/share/code/resources/app/node_modules.asar.unpacked/spdlog/build/Release/spdlog.node)需要
这将显示过期的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发布于 2021-07-07 03:32:57
根据scroveez的建议,/usr/lib64/libstdc++.so.6确实是旧版本的符号链接。为了修复它,我将‘新的’版本25库复制到/usr/lib64/中,并将符号链接改为指向较新的版本。
$ 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
$https://stackoverflow.com/questions/68231387
复制相似问题