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

时间:2013-12-03 16:52:52

标签: c++ linux unix

我最近请求帮助https://stackoverflow.com/questions/20253515/no-idea-as-to-usr-lib-x86-64-linux-gnu-libstdc-so-6-version-cxxabi-1-3-8并且它被关闭并关闭(我不知道为什么)

事实证明" make install" - 安装并暗示目标的make目标" install-target-libstdc ++ v3"并不意味着你准备好了。

我已经被困了一段时间,想知道我做错了什么,因为我认为这样的制作目标会为我做那件事。

我希望这个答案能帮助至少一个人。

8 个答案:

答案 0 :(得分:38)

对于遇到类似问题的所有人,请运行以下命令:

LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

当你编译和安装GCC时,它确实将库放在这里,但就是这样。正如常见问题解答所说(http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths),您需要添加它。

我假设“我如何确保找到动态链接的库?”意味着“如何确保始终找到它”而不是“它不会被发现,你需要这样做”

对于那些不打扰设置前缀的人,它是/ usr / local / lib64

如果您阅读make输出,则可以在安装gcc时简要提及:

Libraries have been installed in:
   /usr/local/lib/../lib32
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages. 

Grr很简单!另外“如果您碰巧想要链接已安装的库” - 严重吗?

答案 1 :(得分:19)

当我尝试安装TopTracker时,我在Ubuntu 14.04上遇到了同样的问题。我有这样的错误:

  

的/ usr /共享/ toptracker / bin中/ TopTracker:   /usr/lib/x86_64-linux-gnu/libstdc++.so.6:版本' CXXABI_1.3.8'不   发现(需要/ usr / share / toptracker / bin / TopTracker)   在/ usr /共享/ toptracker /斌/ TopTracker:   /usr/lib/x86_64-linux-gnu/libstdc++.so.6:version' GLIBCXX_3.4.21'不   发现(需要/ usr / share / toptracker / bin / TopTracker)   在/ usr /共享/ toptracker /斌/ TopTracker:   /usr/lib/x86_64-linux-gnu/libstdc++.so.6:version' CXXABI_1.3.9'不   发现(需要/ usr / share / toptracker / bin / TopTracker)

但是我安装了gcc 4.9版本并且问题消失了:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9

答案 2 :(得分:6)

我得到了正确的解决方案here

正确安装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

使用g ++的--slave将导致g ++与gcc一起切换到相同的版本。但是,此时gcc-4.9将是您在更新替代品中配置的唯一版本,因此将4.8添加到更新替代品中,因此实际上有一个替代方案,使用:

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 Repository并使用/usr/bin/gcc-4.9-base,但我更喜欢使用新的更新工具链。

答案 3 :(得分:2)

此解决方案适用于我的情况我正在使用ubuntu 16.04,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

我希望这对你有用

答案 4 :(得分:1)

使用gcc-4.8(CXXABI_1.3.7)在Ubuntu 14.04 64bit上安装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

答案 5 :(得分:1)

其他答案建议适用于相关计划, 但它有可能导致其他程序的破坏和其他地方未知的依赖。制作一个小包装脚本会更好:

#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
program_needing_different_run_time_library_path

这主要通过将效果限制在需要它们的程序来避免Why LD_LIBRARY_PATH is bad中描述的问题。

请注意,尽管名称LD_RUN_PATH在链接时工作且非邪恶,但LD_LIBRARY_PATH在链接和运行时都起作用(并且 邪恶:)。

答案 6 :(得分:1)

在我的情况下,这是失踪的gcc 6

sudo apt-get install gcc-6 g++-6 -y

答案 7 :(得分:0)

我试图在python中导入fst时,在我的Ubuntu-64系统上遇到了这个问题:

    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,\
ImportError: /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()