未找到版本‘GLIBCXX_3.4.20’

未找到版本‘GLIBCXX_3.4.20’

当我尝试使用 iverilog 执行我的 hdl 文件时,出现以下错误:

/usr/local/lib/ivl/ivl: /opt/Xilinx/Vivado/2015.3/lib/lnx64.o/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/local/lib/ivl/ivl)

当我在 Xilinx 中进行仿真时也是同样的情况。

我尝试了之前帖子中的所有方法,但似乎都不起作用。此外,当我这样做时

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

我得到以下信息:

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_DEBUG_MESSAGE_LENGTH

所以我猜想最新版本已经存在。无法找到解决方案。

答案1

cd xilinx_path/ISE_DS/common/lib/lin64
sudo mv libstdc++.so.6 libstdc++.so.6.orig
sudo ln -s /usr/lib/libstdc++.so.6.0.14 libstdc++.so.6

这些解决了我的问题。

答案2

我还向 LD_LIBRARY_PATH 添加了其他路径,这给不相关的工具(在我的情况下是 svn)带来了麻烦。

我有:

LD_LIBRARY_PATH=/opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64:/opt/Xilinx/14.7/ISE_DS/EDK/lib/lin64:/opt/Xilinx/14.7/ISE_DS/common/lib/lin64:...etc...

系统在 /usr/lib 之前搜索这些,因此它找到了来自 Xilinx 的过时的版本。

为了修复它我做了:

cd /opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64/
sudo mv libstdc++.so.6 libstdc++.so.6.orig
ln -s /usr/lib/libstdc++.so.6.0.19 libstdc++.so.6

cd /opt/Xilinx/14.7/ISE_DS/common/lib/lin64/
sudo mv libstdc++.so.6 libstdc++.so.6.orig
ln -s /usr/lib/libstdc++.so.6.0.19 libstdc++.so.6

EDK 目录中没有 libstdc++.so.6,所以这就足够了。

我碰巧在 Centos 7 上运行,但总的来说这可能是有用的信息。

相关内容