undefined symbol _ZTINSt8ios_base7failureB5cxx11E

导入模块出现undefined symbol _ZTINSt8ios_base7failureB5cxx11E, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference 或者 undefined symbol _ZTINSt8ios_base7failureB5cxx11E

  • 背景
  • 原因
  • 解决方法1:
  • 解决方法2:
  • 补充

或者 undefined symbol _ZTINSt8ios_base7failureB5cxx11E)

背景

在anaconda环境下导入某个包时报错

undefined symbol: _ZTINSt8ios_base7failureB5cxx11E error

symbol _ZTINSt8ios_base7failureB5cxx11E, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

原因

似乎是编译器问题

解决方法1:

网上大部分的方法:

conda install libgcc 

但是我运行命令后没有解决问题

解决方法2:

先运行以查找系统中 libstdc++.so 文件位置

sudo find / -name "libstdc++.so*"

可得到很多路径
undefined symbol _ZTINSt8ios_base7failureB5cxx11E_第1张图片
确定自己的目前所在的环境

如目前我在 /home/zhao/anaconda3/envs/torch120 环境下(就是说我目前使用的是anaconda下我自己创建的环境:torch120 )

(如果当前环境没有找到对应路径,则需要运行之前提到的第一个解决方案的命令,这个时候在就会发现能找到了)

结合我们刚刚查找得到的结果中的 /home/zhao/anaconda3/envs/torch120/lib/libstdc++.so.6,则可运行

strings /home/zhao/anaconda3/envs/torch120/lib/libstdc++.so.6 | grep GLIBCXX

可发现结果为:
undefined symbol _ZTINSt8ios_base7failureB5cxx11E_第2张图片
可以看到其实GLIBCXX_3.4.21 是存在的(其实 strings /home/zhao/anaconda3/envs/torch120/lib/libstdc++.so.6 | grep GLIBCXX 这个命令也能得到找到 _ZTINSt8ios_base7failureB5cxx11E 这个 symbol,只是上图我没有截全

这个时候我们可以认为出错的 原因 可能是库不在环境变量中,查看环境变量:

echo $LD_LIBRARY_PATH  

可以看到的确没有  /home/zhao/anaconda3/envs/torch120/lib 这个路径

因此我们将路径加入到环境变量中

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/zhao/anaconda3/envs/torch120/lib 

问题解决!

自己也折腾了两三个小时,希望能帮到大家。

参考自

https://www.cnblogs.com/YouXiangLiThon/p/11465801.html

补充

LIBRARY_PATH 和 LD_LIBRARY_PATH 是Linux下的两个环境变量,二者的含义和作用可以从下文得知:

https://www.cnblogs.com/lovychen/p/10911600.html

你可能感兴趣的:(个人笔记,linux,python,anaconda,pytorch,tensorflow)