【问题标题】:Cause for undefined reference to 'typeinfo for std::thread::_State@GLIBCXX_3.4.22'?未定义引用“std::thread::_State@GLIBCXX_3.4.22 的 typeinfo”的原因?
【发布时间】:2020-11-30 06:52:13
【问题描述】:

我正在运行带有 gcc 5.4.0、g++ 5.4.0 和 glibc 2.23 的 Ubuntu 16.04。

我运行旧版本的原因是我可以使用 linuxdeployqt 来创建我的应用程序的 AppImage。 Ubuntu 16.04 是与 linuxdeployqt 兼容的最新 Ubuntu 版本。

我目前只是尝试在系统上构建我的应用程序(不使用 linuxdeployqt)并收到以下错误:

undefined reference to 'typeinfo for std::thread::_State@GLIBCXX_3.4.22'

OpenPose linking error on std::thread 等其他问题说只需安装最新版本的 gcc/g++ 即可解决问题,但在这种情况下使用旧版本才是重点。

g++ 5.4.0是2015年发布的,怎么会和C++ 11的一个特性不兼容呢?

【问题讨论】:

  • “它怎么会与 C++ 11 的特性不兼容?” - 我不知道这是否真的是错误,但即使在标准发布多年后发布的编译器也绝对有可能不完全实现标准。

标签: c++ gcc g++ glibc


【解决方案1】:

使用 g++ 编译多线程代码时,需要 -pthread 命令行参数。

【讨论】: