如何解决: /usr/lib/x86_64-linux-gnu/libstdc++.so.6:版本CXXABI_1.3.8'找不到(需要)

我最近要求帮助https://stackoverflow.com/questions/20253515/no-idea-as-to-usr-lib-x86-64-linux-gnu-libstdc-so-6-version-cxxabi-1-3 -8 ,它被压低和closures(我不知道为什么)

事实certificate,“make install” – 安装目标并隐含目标“install-target-libstdc ++ v3”实际上并不意味着你已经准备好了。

我被卡住了一段时间,想知道我做错了什么,因为我认为这样一个目标会为我做。

我希望这个答案可以帮助至less一个其他人。

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

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 ),您需要添加它。

我假设“我如何确保dynamic链接的库将被发现?”意味着“我如何确保它总是被发现”而不是“它不会被发现,你需要这样做”

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

如果您阅读make输出,您可以在安装gcc时简单地find这一点:

 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很简单! 另外“如果你碰巧想链接到已安装的库” – 严重吗?

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

/ 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:未find'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 

我在这里有正确的解决scheme。

正确安装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将会是你在update-alternatives中configuration的唯一版本,所以添加4.8到update-alternatives,所以实际上有一个select,通过使用:

 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,但我更喜欢使用新的更新的工具链。

在使用gcc-4.8(CXXABI_1.3.7)的Ubuntu 14.04 64bit上安装PhantomJS时出现同样的错误

升级到gcc-4.9(CXXABI_1.3.8)修复了这个问题。 HOWTO: https : //askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-4-9-on-ubuntu-14-04

这个解决scheme对我的情况工作我使用的是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 

我希望这会对你有用

我试图在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() 

其他答案的build议将适用于所讨论的scheme,但是有可能导致其他scheme的破坏以及其他方面的未知依赖。 最好做一个小包装脚本:

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

这大多避免了为什么LD_LIBRARY_PATH是坏的,通过将效果限制在需要它们的程序中描述的问题。

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