运行报错找不到/snap/core下libstdc++.so.6的GLIBCXX_3.4.26版本如何解决
错误原因
这个ERR_DLOPEN_FAILED错误由snap运行环境内置的libstdc++.so.6版本过低导致,缺少protagonistNode.js原生模块依赖的GLIBCXX_3.4.26版本,无法完成动态链接库加载。
解决方案
方案1:升级系统GCC版本(通用方案)
高版本GCC会附带符合要求的libstdc++库,Ubuntu/Debian系系统执行以下命令即可:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9
执行完成后运行以下命令确认是否已包含所需版本:strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.26
有对应版本输出即为升级成功。
方案2:临时指定加载高版本libstdc++(针对snap环境适配)
本次报错的动态库来自snap的内置运行环境,你可以在启动程序时指定优先加载系统全局的高版本libstdc++.so.6:LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 你的程序启动命令
方案3:本地重新编译Node模块
如果升级依赖后仍有报错,可以在本地环境重新编译protagonist模块,适配当前系统的依赖版本:
- 全局安装的模块执行:
yarn global add --force protagonist或npm rebuild -g protagonist - 项目内安装的模块执行:
yarn rebuild protagonist或npm rebuild protagonist
内容的提问来源于stack exchange,提问作者Roberio Guedelho
相关产品推荐
相关产品推荐

