解决 /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 时间: 2019-05-19 16:44 分类: Linux 出现这个问题的原因就是`GCC`的版本过低导致的,所以我们需要升级`GCC`版本。 一开始按照网上的一篇文章,用高版本的源码进行升级,我是在`Ubuntu 14.04`上进行编译的,结果编译不过,一直报错,类似下面错误信息: > Makefile:505: *** missing separator. Stop. 谷歌找了下是什么原因,有人说是`Windows`与`Linux`字符编码不同导致的,但我下载的源码应该就是`Linux`下的,别人的文章也是可以编译成功的。 无奈,另寻他法吧。 最终,找到了一个可行的方法:使用 conda 升级 GCC。 首先,需要安装`conda`,安装方法可自行谷歌搜索,安装好了之后执行以下命令: > conda install libgcc 此时会提示: ``` root@PAR-130634:/opt# conda install libgcc Fetching package metadata ......... Solving package specifications: . Package plan for installation in environment /root/anaconda3: The following packages will be UPDATED: conda: 4.3.21-py36_0 --> 4.3.30-py36h5d9f9f4_0 libgcc: 4.8.5-2 --> 5.2.0-0 ``` 说明`GCC`升级成功,但此时`/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found`错误还是会有的。 因为我们还没有修改软连接,首先我们找到升级后的`.so`文件: ``` root@PAR-130634:/opt# find / -name libstdc++.so* /usr/lib/gcc/x86_64-linux-gnu/4.8/libstdc++.so /usr/lib/vmware/lib/libstdc++.so.6 /usr/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6 /usr/lib/vmware-ovftool/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py /root/anaconda3/pkgs/libgcc-4.8.5-2/lib/libstdc++.so /root/anaconda3/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6.0.19 /root/anaconda3/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6 /root/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so.6.0.21 /root/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so /root/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so.6 /root/anaconda3/lib/libstdc++.so.6.0.21 /root/anaconda3/lib/libstdc++.so /root/anaconda3/lib/libstdc++.so.6 ``` 我们要用到的就是`/root/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so.6.0.21`。 接着删除之前的软连接: > rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6 建立新的软连接: > ln -s /root/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so.6.0.21 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 至此,问题解决。 标签: 无