/usr/lib/x86_64-linux-gnu/libstdc++.so.6: 未找到版本 CXXABI_1.3.8'

2024-10-18 09:00:00
admin
原创
74
摘要:问题描述:事实证明,“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()
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用