我最近将gcc 6.1引导到我的基于ubuntu的linux发行版。 看起来它安装得当,因为我可以编译用C和C ++编写的程序。 我也可以运行已编译的可执行文件。 我还可以编译包含C ++ 11和C ++ 14功能的程序,没有任何错误,但是当我尝试运行这些可执行文件时,我收到以下错误;
./exec: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./ardi)
我跑的时候;
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIB
该列表不包含所需文件。 这是否意味着gcc 6.1在其他地方有这些文件。 如何找到所需文件并重定向gcc。我是linux系统的新手,甚至不确定我是否正确理解错误。
答案 0 :(得分:1)
我认为这是因为您的主机libstdc ++库比新g ++中的库早。因此,您可以尝试使用静态链接来避免使用-static-libstdc++
g ++标志从较新的std lib版本中获得外部依赖性。此解决方案的成本是增加了可执行文件的大小。