/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_LIBRAR...

问题描述:

事实证明,“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。我的系统中出现了同样的错误。我按照简单的步骤操作后,问题就解决了:

  1. LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH

  2. export LD_LIBRARY_PATH

  3. sudo apt-add-repository ppa:ubuntu-toolchain-r/test

  4. sudo apt-get update

  5. 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()
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   609  
  在现代项目管理中,资源的有效利用是确保项目成功的关键因素之一。随着技术的不断进步,越来越多的工具和软件被开发出来,以帮助项目经理和团队更高效地管理资源。本文将介绍10款工具,这些工具可以帮助项目团队提升资源利用效率,从而实现项目目标。禅道项目管理软件禅道项目管理软件是一款开源的项目管理工具,广泛应用于软件开发和其他行业...
项目管理系统   3  
  在项目管理领域,软件工具的不断升级和创新是推动效率和协作的关键。2024年,众多项目管理软件将迎来一系列令人期待的升级功能,这些新特性不仅将提升团队的工作效率,还将增强用户体验和数据分析能力。本文将详细介绍10款项目管理软件的最新升级功能,帮助项目经理和团队成员更好地规划和执行项目。禅道项目管理软件禅道项目管理软件一直...
开源项目管理工具   2  
  信创国产系统的10个关键厂商及其技术生态随着全球信息技术格局的不断演变,信创(信息技术应用创新)产业作为国产化替代的重要阶段,正逐步成为推动我国信息技术自主可控、安全可靠的核心力量。信创产业不仅关乎国家信息安全,也是数字经济高质量发展的关键支撑。本文将深入探讨信创国产系统中的10个关键厂商及其技术生态,分析它们在信创浪...
项目管理流程   0  
  在探讨项目管理的广阔领域中,成功并非偶然,而是精心策划、高效执行与持续优化的结果。项目管理的成功之道,可以从明确的目标设定与规划、高效的团队协作与沟通、以及灵活的风险管理与适应变化这三个核心方面进行深入解析。每个方面都是项目成功的基石,它们相互交织,共同支撑起项目的顺利推进与最终成就。明确的目标设定与规划项目管理的首要...
建筑工程项目管理规范   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用