jinji
发布于 2025-03-03 / 53 阅读
0
0

paddle缺少GLIBCXX_3.4.20

这个报错说明 PaddlePaddle 在加载其核心库 libpaddle.so 时,依赖的 C++ 标准库(libstdc++.so.6)缺少 GLIBCXX_3.4.20 这个符号,而系统中默认的 /lib64/libstdc++.so.6 版本较旧,不满足要求。

原因分析

  • 系统库版本过旧
    系统默认的 libstdc++ 可能来自较老的 GCC 版本(比如 4.8 或更低),而 GLIBCXX_3.4.20 要求至少 GCC 4.9 版本的支持。

  • Conda 环境中的库未被优先加载
    虽然你通过 conda 安装了 libstdcxx-ng(这个包通常会提供较新的 libstdc++),但由于环境变量(如 LD_LIBRARY_PATH)的设置问题,程序在运行时优先加载了系统的 /lib64/libstdc++.so.6,而不是 conda 环境下更新的版本。

解决方案

  1. 验证 conda 环境中 libstdc++ 版本
    先确认 conda 环境下的 libstdc++ 是否包含所需的版本:

    strings $CONDA_PREFIX/lib/libstdc++.so.6 | grep GLIBCXX
    

    检查输出中是否包含 GLIBCXX_3.4.20 及更高版本。

  2. 调整 LD_LIBRARY_PATH 优先使用 conda 库
    在启动 Python 或运行程序前,设置环境变量让 conda 环境中的库优先加载:

    export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
    

    然后再运行你的脚本:

    python scrapV3.py
    
  3. 检查 Conda 环境配置
    如果以上方法无效,确保在激活 conda 环境时,环境变量能够自动配置。如果环境变量设置有问题,可以在环境激活脚本中添加上述 export 命令。

采用上述步骤后,Python 应该会加载 conda 环境中较新的 libstdc++,从而满足 PaddlePaddle 对 GLIBCXX 的要求,报错也应该得到解决。


评论