c++ - gcc 6.1 可执行文件链接错误

标签 c++ linux c++11 gcc

我最近将 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/

相关文章:

c++ - 无法从 lambda 构建

c++ - 从 C++11 中的线程返回一个值

c++ - 使用二进制信号量作为计数信号量

c++ - 具有多个可执行文件和依赖项的 Makefile

linux shell流重定向直接运行命令列表

linux - PACKET_MMAP 的一些问题

c++ - C++ 11 中 Mersenne Twister 的最佳常量种子

c++ - 用C++解析文件并将其写入表格中的HTML

c++ - 计算opencv中轮廓内子轮廓的数量

c++ - 如何使用 __attribute__((visibility ("default")))?