Nix执行命令提示找不到libstdc++.so.6共享库问题咨询
Nix环境缺失libstdc++.so.6报错解决方案
核心问题解答
Nix 不会默认提供全局可用的libstdc++,这是Nix隔离式依赖设计的正常表现:所有依赖都只会在对应包的构建/运行环境中按需注入,不会直接暴露到全局系统路径下,避免出现依赖版本冲突。
报错原因
此前运行正常近期才出现报错,通常是以下几种情况导致:
- 近期清理Nix Store时,删除了之前被其他包依赖、顺带在环境中可用的libstdc++对应包版本
- 修改了shell配置,移除了此前手动添加的Nix库路径导入规则
- 升级了Nix版本或nixpkgs分支,对应环境的默认依赖配置发生了变动
修复方案
单次命令临时修复
运行命令时主动将gcc(自带libstdc++运行库)加入依赖即可:
nix-shell -p gcc nix-info --run "nix-info"
项目nix-shell永久修复
在项目的shell.nix或flake.nix的buildInputs配置项中添加stdenv.cc.cc.lib依赖,后续进入nix-shell时会自动将libstdc++的库路径注入到环境变量中,运行程序不会再报缺失错误。
全局环境修复(不推荐,会破坏Nix隔离性)
如果需要全局所有Nix相关命令都能找到libstdc++,可以在你的shell配置文件(~/.bashrc/~/.zshrc等)末尾添加如下配置:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(nix-build '<nixpkgs>' -A gcc.cc.lib)/lib
内容的提问来源于stack exchange,提问作者unhammer
相关产品推荐
相关产品推荐

