/usr/lib/x86_64-linux-gnu/libstdc++.so.6: 未找到版本 CXXABI_1.3.8'
- 2024-10-18 09:00:00
- admin 原创
- 77
问题描述:
事实证明,“make install” - 安装并隐含目标“install-target-libstdc++v3”的make目标实际上并不意味着您已准备好开始。
我一直困惑了一段时间,想知道我做错了什么,因为我认为这样的 make 目标会为我做到这一点。
解决方案 1:
将库的路径添加到LD_LIBRARY_PATH
环境变量中
总结
当 GCC 找不到正确的版本时,它会要求您手动告诉它您的库位于何处,这可以通过几种方式完成。一种方法是将其添加到LD_LIBRARY_PATH
.
export LD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PATH"
对于某些人来说,库路径将是/usr/local/lib64/
。其他人则报告说库路径/usr/lib/x86_64-linux-gnu/
对他们来说有效。
为什么我们需要添加该库LD_LIBRARY_PATH
?
当您编译并安装 GCC 时,它会将库放在这些目录之一中,但这就是它所做的一切。根据 的常见问题解答libstdc++
,我们收到的错误意味着动态链接器找到了错误版本的libstdc++
共享库。由于链接器找不到正确的版本,我们必须告诉它在哪里找到库libstdc++
。
解决此问题的最简单方法是使用 LD_LIBRARY_PATH 环境变量,它是一个以冒号分隔的目录列表,链接器将在其中搜索共享库。
还有其他方法可以解决这个问题。gcc
如果你阅读 make 的输出,你可以在安装时找到这个以及简要提到的其他解决方案:
已安装库:
/usr/local/lib/../lib32
如果您碰巧想要链接到给定目录 LIBDIR 中已安装的库,则必须使用 libtool 并指定库的完整路径名,或者在链接期间使用“-LLIBDIR”标志并执行以下操作之一:
在执行期间将 LIBDIR 添加到 `LD_LIBRARY_PATH' 环境变量中
在链接期间将 LIBDIR 添加到“LD_RUN_PATH”环境变量中
使用“-Wl,-rpath -Wl,LIBDIR”链接器标志
让你的系统管理员将 LIBDIR 添加到“/etc/ld.so.conf”
有关更多信息,请参阅有关共享库的任何操作系统文档,例如 ld(1) 和 ld.so(8) 手册页。
哎呀,这很简单!另外,“如果您碰巧想要链接已安装的库”,真的吗?
解决方案 2:
当我尝试在Ubuntu 14.04 (Trusty Tahr) 上安装 TopTracker 时,也遇到了同样的问题。我收到以下错误:
/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:未找到版本“CXXABI_1.3.8”(/usr/share/toptracker/bin/TopTracker 所要求)/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:未找到版本“GLIBCXX_3.4.21”(/usr/share/toptracker/bin/TopTracker 所要求)/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:未找到版本“CXXABI_1.3.9”(/usr/share/toptracker/bin/TopTracker 所要求)
但是我随后安装了GCC 4.9.0版本(2014-04-22),问题就消失了:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
解决方案 3:
我在这里找到了正确的解决方案。
正确安装 gcc-4.9 并将其设置为默认 gcc 版本的最佳方法是使用:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
--slave 和 g++ 一起使用时,会导致 g++ 与 gcc 一起切换为同一版本。但是,此时 gcc-4.9 将是您在 update-alternatives 中配置的唯一版本,因此请将 4.8 添加到 update-alternatives 中,这样实际上就有了另一种选择,方法是使用:
sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
然后,您可以检查设置了哪一个,并使用以下命令来回更改:
sudo update-alternatives --config gcc
注意:您可以跳过安装 PPA 存储库并直接使用 /usr/bin/gcc-4.9-base,但我更喜欢使用最新更新的工具链。
解决方案 4:
就我而言,缺少的是 gcc 6
sudo apt-get install gcc-6 g++-6 -y
更新
sudo apt-get install gcc-7 g++-7 -y
解决方案 5:
此解决方案对我而言有效。我使用的是Ubuntu 16.04 (Xenial Xerus)、VirtualBox 2.7.2 和Genymotion 2.7.2。我的系统中出现了同样的错误。我按照简单的步骤操作后,问题就解决了:
LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
解决方案 6:
其他答案建议的方法对有问题的程序有效,但可能会导致其他程序崩溃和其他地方的未知依赖。最好制作一个小包装脚本:
#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
program_needing_different_run_time_library_path
通过将影响限制在需要它们的程序中,这主要避免了为什么 LD_LIBRARY_PATH 不好中描述的问题。
请注意,尽管名称为 LD_RUN_PATH,但它在链接时工作并且是非邪恶的,而 LD_LIBRARY_PATH 在链接时和运行时都工作(并且是邪恶的:)。
解决方案 7:
在 Ubuntu 14.04 64 位上使用 gcc-4.8(CXXABI_1.3.7)安装 PhantomJS 时出现同样的错误
升级到 gcc-4.9 (CXXABI_1.3.8) 解决了该问题。操作方法:
https ://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-4-9-on-ubuntu-14-04
解决方案 8:
当我尝试在 Ubuntu-64 系统上导入 fst 时遇到了这个问题:
Python 3.4.3 |Continuum Analytics, Inc.| (default, Jun 4 2015, 15:29:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import fst
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ogi/miniconda3/lib/python3.4/site-packages/pyfst-0.2.3.dev0-py3.4-linux-x86_64.egg/fst/__init__.py", line 1, in <module>
from fst._fst import EPSILON, EPSILON_ID, SymbolTable,\nImportError: /home/ogi/miniconda3/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/lib/libfst.so.1)
然后我跑了:
ogi@ubuntu:~/miniconda3/lib$ find ~/ -name "libstdc++.so.6"
/home/ogi/miniconda3/lib/libstdc++.so.6
/home/ogi/miniconda3/pkgs/libgcc-5-5.2.0-2/lib/libstdc++.so.6
/home/ogi/miniconda3/pkgs/libgcc-4.8.5-1/lib/libstdc++.so.6
find: `/home/ogi/.local/share/jupyter/runtime': Permission denied
ogi@ubuntu:~/miniconda3/lib$
mv /home/ogi/miniconda3/lib/libstdc++.so.6 /home/ogi/miniconda3/libstdc++.so.6.old
cp /home/ogi/miniconda3/libgcc-5-5.2.0-2/lib/libstdc++.so.6 /home/ogi/miniconda3/lib/
此时我就可以加载库了
ogi@ubuntu:~/miniconda3/lib$ python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Jun 4 2015, 15:29:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import fst
>>> exit()
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件