使用 g 编译多线程代码
尽管指定了必要的标志,但个人在使用 g 编译多线程代码时遇到了困难。该代码包含用于 I/O 和线程操作的头文件,非常简单,包含一个工作线程和一个主线程。然而,编译尝试导致了错误:
terminate called after throwing an instance of 'std::system_error' what(): Enable multithreading to use std::thread: Operation not permitted Aborted (core dumped)
个人已经在其编译命令中包含了 -pthread 标志,通常建议在 g 中启用多线程。然而问题依然存在。
问题的答案源于 gcc 的一个 bug。相关错误讨论的最后评论中建议的解决方法包括将以下标志添加到编译命令中:
-Wl,--no-as-needed
通过实施此解决方法,个人能够使用 g 成功编译并运行其多线程代码.
以上是为什么即使使用 -pthread 标志,g 仍然抛出'启用多线程以使用 std::thread: 不允许操作”?的详细内容。更多信息请关注PHP中文网其他相关文章!