我最近将 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 系统的新手,甚至不确定我是否正确理解错误。
最佳答案
我认为这是因为您的主机 libstdc++ 库比新 g++ 中的库旧。因此,您可以尝试使用静态链接来避免使用 -static-libstdc++
g++ 标志对较新的 std lib 版本的外部依赖。该解决方案的代价是增加了生成的可执行文件的大小。
关于c++ - gcc 6.1 可执行文件链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37255827/