未找到版本“GLIBCXX_3.4.22”

Version `GLIBCXX_3.4.22' not found

我在 VM Ubuntu 16.04 上构建了一个 C++ 应用程序,我在上面安装了 g++ 编译器 6.2.0 以支持 C++14 功能。当我尝试在默认为 g++ 5.4.0 的新干净 VM 16.04 上 运行 它时,错误 /usr/lib/x86_64-linux-gnu/libstdc++.so.6: 版本 `GLIBCXX_3。弹出 4.22' 未找到
我注意到在 VM 上安装了更新的编译器库 libstdc++.so.6.0.22。在干净的 VM 上,我想避免更新编译器,所以我尝试只安装最新的 libstdc++6 包。但是,安装的库是 libstdc++.so.6.0.21,因此问题仍然存在。如何专门安装 libstdc++.so.6.0.22 版本?

您可以尝试使用 pinning 来确保只有您需要的软件包更新到较新的版本。

或者,您可以简单地使用 g++ 5.4 编译您的程序,因为根据 this page,此编译器已经支持所有 c++14,唯一的区别是 g++-6 默认为 -std=c++14,而对于 g++-5,您必须明确设置语言标准。

您需要像这样将 libstdc++6 升级到最新版本

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

之后你可以像这样检查你是否得到了你想要的 GLIBCXX 版本:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX