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

2024-10-18 09:00:00
admin
原创
241
摘要:问题描述:事实证明,“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()
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用