找不到版本为`GLIBCXX_3.4.22'的库

25

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


1
将除了libc以外的所有内容静态链接。 - Matteo Italia
2个回答

59
您需要将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

1
对于其他人:如果命令 add-apt-repository 像我一样失败了,请按照此处的说明操作(将 precise 替换为您的 Ubuntu 版本):https://askubuntu.com/a/193520/376175 - John Walthour

1
你可以尝试使用固定功能,确保只有你想要更新的软件包被更新到新版本。
或者,你可以简单地使用g++ 5.4编译程序,因为根据这个页面,这个编译器已经支持所有c++14,唯一的区别是g++-6默认使用-std=c++14,而在g++-5中你需要显式设置语言标准。

1
嗯,在C++14方面,GCC 5和GCC 6之间肯定不止这一个区别。 - rubenvb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接