导入TVM时提示GLIBCXX_3.4.30未找到的问题求助
解决TVM导入时GLIBCXX_3.4.30缺失的问题
这个错误的核心原因是你的Anaconda环境自带的libstdc++.so.6版本低于TVM编译时依赖的版本,运行时Anaconda的库被优先加载导致版本冲突。以下是几种可行的解决方法:
方法一:优先加载系统的高版本libstdc++
先检查系统的
libstdc++.so.6是否包含GLIBCXX_3.4.30:strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.30(如果是ARM架构,路径改为
/usr/lib/aarch64-linux-gnu/libstdc++.so.6)如果输出包含
GLIBCXX_3.4.30,说明系统库满足要求,只需让Python优先加载系统库:- 临时生效:运行TVM前执行
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 python -c "import tvm" - 永久生效:编辑Anaconda环境的激活脚本(没有则创建)
~/anaconda3/envs/tvm-build/etc/conda/activate.d/env_vars.sh,添加:
之后每次激活export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6tvm-build环境都会自动应用这个设置。
- 临时生效:运行TVM前执行
方法二:更新系统的libstdc++库
如果系统库没有GLIBCXX_3.4.30,需要更新:
- Debian/Ubuntu系统:
sudo apt update && sudo apt install --only-upgrade libstdc++6 - 若上述命令无法更新到足够版本,可添加Ubuntu工具链源后再更新:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update && sudo apt install libstdc++6
方法三:用Anaconda环境的gcc重新编译TVM
确保TVM编译和运行使用同一版本的libstdc++:
- 激活你的
tvm-build环境,安装适配的gcc:conda activate tvm-build conda install gcc_linux-64 - 重新配置TVM的CMake编译选项,指定使用环境内的gcc:
cd tvm/build rm -rf * cmake -DCMAKE_C_COMPILER=$CONDA_PREFIX/bin/gcc -DCMAKE_CXX_COMPILER=$CONDA_PREFIX/bin/g++ .. make -j$(nproc) - 重新安装TVM的Python包后再测试导入。
内容的提问来源于stack exchange,提问作者Maryam
相关产品推荐
相关产品推荐

